2016-03-05 51 views
0

我有以下SQL Server查詢問題。SQL Server:比較行,當某些值相同時從結果中排除

如果在另一行中有一行其中Issue_DATE =爲Maturity_Date,並且兩行都具有相同的ID和金額USD,則不應顯示這些行。

這裏是我的表的簡化版本:

ID  ISSUE_DATE     MATURITY_DATE   AMOUNT_USD 
1  2010-01-01 00:00:00.000  2015-12-01 00:00:00.000  5000 
1  2010-01-01 00:00:00.000  2001-09-19 00:00:00.000  700 
2  2014-04-09 00:00:00.000  2019-04-09 00:00:00.000  400 
1  2015-12-01 00:00:00.000  2016-12-31 00:00:00.000  5000 
5  2015-02-24 00:00:00.000  2015-02-24 00:00:00.000  8000 
4  2012-11-29 00:00:00.000  2015-11-29 00:00:00.000  10000 
3  2015-01-21 00:00:00.000  2018-01-21 00:00:00.000  17500 
2  2015-02-02 00:00:00.000  2015-12-05 00:00:00.000  12000 
1  2015-01-12 00:00:00.000  2018-01-12 00:00:00.000  18000 
2  2015-12-05 00:00:00.000  2016-01-10 00:00:00.000  12000 

的結果應該是:

ID  ISSUE_DATE     MATURITY_DATE   AMOUNT_USD 
1  2010-01-01 00:00:00.000  2001-09-19 00:00:00.000  700 
2  2014-04-09 00:00:00.000  2019-04-09 00:00:00.000  400 
5  2015-02-24 00:00:00.000  2015-02-24 00:00:00.000  8000 
4  2012-11-29 00:00:00.000  2015-11-29 00:00:00.000  10000 
3  2015-01-21 00:00:00.000  2018-01-21 00:00:00.000  17500 
1  2015-01-12 00:00:00.000  2018-01-12 00:00:00.000  18000 

我自己嘗試過加入,但我沒有得到正確的結果。

在此先感謝!

回答

0

你可以嘗試這樣的事情嗎? '不存在'是這樣做的方式。

select * from table t1 where not exists (select 'x' from table t2 where t1.issue_date = t2.maturity_date and t1.amount_usd=t2.amount_usd and t1.id = t2.id) 
0

我想使所有的受騙者的子查詢,然後從第一臺消除它們像這樣:

select t1.ID 
, t1.ISSUE_DATE 
, t1.MATURITY_DATE 
, t1.AMOUNT_USD 
FROM 
    t1 
LEFT JOIN 
(select a.ID 
    , a.ISSUE_DATE 
    , a.MATURITY_DATE 
    , a.AMOUNT_USD 
FROM 
    t1 a 
INNER JOIN 
    ti b 
) dupes 
    on 
t1.ID = dupes.ID 
    WHERE dupes.ID IS NULL;