![TABLE][1]
大家好,
我有一张包含上述记录的表格,每个N_ID
可以有2个条目。我只想在满足以下条件的情况下从中获取记录。
比如说
状态列值为1& 2表示N_ID = 2和2& 1表示N_ID = 5,表示状态值不同(即1和2)。
但是如果你看到N_ID = 3,则状态列有1& 1是相同的。
所以我想要不包括具有相同状态值的N_ID的记录(即哪个具有1& 1或2& 2等等)。
在上述情况下,我只想要N_ID = 2,5的记录。
感谢
答案 0 :(得分:1)
您可以使用EXISTS
SELECT * FROM dbo.TableName t1
WHERE EXISTS(
SELECT 1 FROM dbo.TableName t2
WHERE t1.N_ID = t2.N_ID
AND t1.Status <> t2.Status
)
答案 1 :(得分:1)
您可以排除每个ID具有多个相同状态的行
SELECT *
FROM TABLENAME tb
WHERE tb.N_ID NOT IN (
SELECT tb.N_ID
FROM TABLENAME tb
GROUP BY tb.N_ID, tb.CONFIG_TYPE, tb.STATUS
HAVING COUNT(*) > 1)
答案 2 :(得分:0)
使用EXISTS()尝试选项并检查COUNT(*)
SELECT *
FROM dbo.test16 t
WHERE t.Config_Type != 2 AND EXISTS (
SELECT 1
FROM dbo.test16 t2
WHERE t.Networkelemenid = t2.Networkelemenid
GROUP BY t2.Networkelemenid, t2.Config_Type
HAVING COUNT(DISTINCT t2.Status) > 1
)
此脚本将数据分组到t2.Config_Type。 HAVING COUNT(DISTINCT t2.Status)指定结果集中只能出现唯一的行(例如1,2 = 2; 1,1或2,2 = 1)
对于第二个条件,您需要此脚本
SELECT *
FROM dbo.test41 t
WHERE t.Config_Type != 2 AND EXISTS (
SELECT 1
FROM dbo.test41 t2
WHERE t.Networkelemenid = t2.Networkelemenid
GROUP BY t2.Networkelemenid, t2.Config_Type, t2.Status
HAVING COUNT(t2.Status) > 1
)