SQL Server中是否有任何可能的方法/查询,我可以在其中获取重复项以外的列值。下面是示例
id | device_id | company_id |
1 1 4
2 1 4
3 2 4
4 3 4
在上表中,我只需要device_id不重复的列数据,即device_id = 2和3。我知道Distict,但是通过使用distinct,我也得到了重复的一个值,但是我只想要没有重复的结果。 希望我能解释我的问题。 TIA 。
答案 0 :(得分:0)
有几种方法可以做到这一点。您可以使用COUNT(*) OVER(..)
:
WITH CTE AS
(
SELECT *, COUNT(*) OVER(PARTITION BY device_id) N
FROM dbo.YourTable
)
SELECT id,
device_id,
company_id
FROM CTE
WHERE N = 1;
您可以将联接与派生表一起使用:
SELECT T1.*
FROM dbo.YourTable T1
INNER JOIN (SELECT device_id, COUNT(*) N
FROM dbo.YourTable
GROUP BY device_id
HAVING COUNT(*) = 1) T2
ON T1.device_id = T2.device_id
;