仅当所选列具有不同的值时,MS SQL Server查询才会返回

时间:2014-10-24 16:18:58

标签: sql-server

如果两个或多个记录版本不同,即查询应返回

,如何创建仅返回相同IP地址记录的SQL查询
IP_Address      Version
10.10.10.10      11                         
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      12

但不是

IP_Address      Version
10.10.10.10      11                         
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11   
10.10.10.10      11

我在

中添加了什么
select * from dbo.Computers
where IP_Address = '10.10.10.10'

没有说明版本是什么,它可以是任何数字

谢谢!

2 个答案:

答案 0 :(得分:1)

好像您正在寻找过滤后的分组结果。

SELECT IP_Address
, Version
FROM dbo.Computers
WHERE IP_Address in (SELECT IP_Address
FROM dbo.Computers
GROUP BY IP_Address
HAVING COUNT(DISTINCT Version) > 1)

答案 1 :(得分:1)

查询:

WITH CTE AS (SELECT IP_Address,COUNT([Version]) OVER(PARTITION BY IP_Address,Version) AS [CountVersion],COUNT(IP_Address) OVER(PARTITION BY IP_Address) AS [CountIP]
             FROM dbo.Computers)
SELECT A.IP_Address, A.Version
FROM dbo.Computers A    
WHERE A.IP_Address IN(SELECT DISTINCT IP_Address FROM CTE WHERE CountIP>CountVersion)
ORDER BY IP_Address, Version

此查询使用公用表表达式来执行计数并显示列出了多个版本的IP地址。