我对SQL比较陌生,并且在尝试解决这个问题时遇到了很多问题。我尝试过使用LEFT JOIN,并尝试使用函数来实现这一点,但无济于事。
对于每个UserID,如果有NULL值,我需要从SELECT中删除该UserID的产品ID的所有记录。
我正在使用SQL Server 2014。
示例表
+--------------+-------------+---------------+ | UserID | ProductID | DateTermed | +--------------+-------------+---------------+ | 578 | 2 | 1/7/2017 | | 578 | 2 | 1/7/2017 | | 578 | 1 | 1/15/2017 | | 578 | 1 | NULL | | 649 | 1 | 1/9/2017 | | 649 | 2 | 1/11/2017 | +--------------+-------------+---------------+
所需输出
+--------------+-------------+---------------+ | UserID | ProductID | DateTermed | +--------------+-------------+---------------+ | 578 | 2 | 1/7/2017 | | 578 | 2 | 1/7/2017 | | 649 | 1 | 1/9/2017 | | 649 | 2 | 1/11/2017 | +--------------+-------------+---------------+
答案 0 :(得分:0)
您可以使用此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 并且 ProductId 为每对获取一个唯一值时,您可以将它们用作“关键字”以排除“对”在 DateTermed 字段中使用null值。
希望得到这个帮助。
答案 1 :(得分:0)
尝试以下方法:
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 和 ProductID 记录。如果您只记录在已加入的表格中没有关联的用户ID 和 ProductID 的记录,则只能留下不具备的记录 null 日期。