没有重复项的SQL Server数据

时间:2018-09-12 15:37:52

标签: sql-server

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   。

1 个答案:

答案 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
;