2017-04-06 69 views
-2

我有一张表,其中包含每个月的所有活动贷款(例如2017_01,2017_02,2017_03等)。由于我没有另一个包含非活动贷款的表(封闭贷款),我必须操纵同一张表来获得每个特定月份的已结清贷款。自己的左/右连接表

我已经尝试了RIGHT OUTER JOIN以获得贷款,这些贷款是前一个YEAR_MONTH的一部分,并且在下个月有一个NULL值,但由于表使用LOAN_NUMBER字段作为关键连接本身,所以我没有得到理想的结果。

任何想法我可以做什么? Ps:在其他情况下,我需要做的是使用“WHERE NOT EXISTS”子句,但我有两个不同的表。

我的查询是:

SELECT DM07MD.LOAN_NUMBER, DM07MD2.LOAN_NUMBER AS L2 
FROM [dbo].[DM_07MONTHLY_DATA] DM07MD 
LEFT OUTER JOIN [dbo].[DM_07MONTHLY_DATA] DM07MD2 
ON DM07MD.LOAN_NUMBER = DM07MD2.LOAN_NUMBER 
AND DM07MD.YYYY_MM = '2017_01' 

WHERE DM07MD.S90T01_CLIENT_SEGMENT IN ('PI', 'MICRO') 
AND DM07MD.S90T01_IS_RESTRUCTURED = 1 
AND DM07MD2.LOAN_NUMBER IS NULL 
AND DM07MD.YYYY_MM = '2017_02' 
+2

添加表结构,样本数据和预期产出的问题。 –

+2

同时向我们显示您当前的查询尝试。 – jarlh

+2

并标记DBMS – JohnHC

回答

0

您可以通过使用获得同样存在,

SELECT DM07MD.LOAN_NUMBER FROM [dbo].[DM_07MONTHLY_DATA] DM07MD where DM07MD.YYYY_MM = '2017_02' and not exists 
(SELECT 1 FROM [dbo].[DM_07MONTHLY_DATA] DM07MD2 where DM07MD.YYYY_MM = '2017_01' and DM07MD.LOAN_NUMBER=DM07MD2.LOAN_NUMBER) 
+0

它成功执行但它不返回正确的行数:/ – Marin

+0

然后更改条件内部和外部 – Rams