SQL Server:比较行,在某些值相同时从结果中排除
我有以下SQL Server查询问题 如果在另一行中有一行的发行日期=到期日期,并且如果两行的ID和金额相同,则不应显示这些行 以下是我的表格的简化版本:SQL Server:比较行,在某些值相同时从结果中排除,sql,compare,rows,Sql,Compare,Rows,我有以下SQL Server查询问题 如果在另一行中有一行的发行日期=到期日期,并且如果两行的ID和金额相同,则不应显示这些行 以下是我的表格的简化版本: 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.00
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
我尝试了使用self-join,但没有得到正确的结果
提前谢谢 你能试试这样的吗?”“不存在”是这样做的方式
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)
我会考虑对所有重复进行子查询,然后从第一个表中删除它们,如下所示:
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;