我对SQL相对陌生,在试图解决这个问题时遇到了很多问题。我尝试过使用LEFT JOIN,并尝试过使用函数来实现这一点,但都无济于事。
对于每个UserID,如果有NULL值,我需要从SELECT中删除该UserID的产品ID的所有记录。
我使用的是SQL Server 2014。
示例表
+--------------+-------------+---------------+|UserID|ProductID|DateTermed|+--------------+-------------+---------------+|578|2|2017年7月1日||578|2|2017年7月1日||578 | 1 | 2017年1月15日||578|1|NULL||649|1 | 2017年9月1日||649 | 2 | 2017年11月1日|+--------------+-------------+---------------+
所需输出
+--------------+-------------+---------------+|UserID|ProductID|DateTermed|+--------------+-------------+---------------+|578|2|2017年7月1日||578|2|2017年7月1日||649|1 | 2017年9月1日||649 | 2 | 2017年11月1日|+--------------+-------------+---------------+
尝试以下操作:
SELECT a.userid, a.productid, a.datetermed
FROM yourtable a
LEFT OUTER JOIN (SELECT userid, productid, datetermed FROM yourtable WHERE
datetermed is null) b
on a.userid = b.userid and a.productid = b.productid
WHERE b.userid is not null
这将使日期为null的所有记录与相应的UserID和ProductIDserID和ProductIDull日期的记录。
您可以使用此WHERE
条件:
SELECT
UserID,ProducID,DateTermed
FROM
[YourTableName]
WHERE
(CONVERT(VARCHAR,UserId)+
CONVERT(VARCHAR,ProductID) NOT IN (
select CONVERT(VARCHAR,UserId)+ CONVERT(VARCHAR,ProductID)
from
[YourTableName]
where DateTermed is null)
)
当您连接UserId和ProductIdateTermed字段中具有null值的"对"。
希望得到帮助。