我有一个加入和离开公司的客户表
ID ActiveFrom ActiveTo
例如,我有一个 where 子句,它有
where ActiveFrom <= '20170101'
and Activeto < '20170201'
但有时,由于交易,客户决定在几天后重新加入公司。
示例客户:
ID ActiveFrom ActiveTo
1 2000-01-01 2017-01-03
1 2017-01-28 Null
2 2000-01-01 2017-01-06
我想将这样做的客户排除在离开公司但回来的客户之外
所以我希望只返回 id 2
请帮忙
你可以试试这个。
SELECT * FROM Customer C1
WHERE C1.ActiveFrom <= '20170101'
AND C1.Activeto < '20170201'
AND NOT EXISTS ( SELECT * FROM Customer C2
WHERE C1.ID = C2.ID
AND C2.ActiveTo IS NULL )
您可以在语句上使用子查询WHERE
:
SELECT *
FROM tablename
WHERE (SELECT id FROM tablename WHERE activeTo is null) <> id
GROUP By id
您可以在此处找到更多信息: https://www.techonthenet.com/sql_server/subqueries.php