我有一个MS SQL查询SELECT DISTINCT
SELECT DISTINCT Date_of_Record, Computer_Name, IP_Address, Agent_Version, Mac_Address
FROM [SEP_Versions].dbo.Computers
WHERE Computer_Name in (SELECT Computer_Name
FROM [SEP_Versions].dbo.Computers
GROUP BY Computer_Name
HAVING COUNT(DISTINCT Agent_Version) > 1)
AND [SEP_Versions].dbo.Computers.COMPUTER_NAME LIKE '%s001'
AND [SEP_Versions].dbo.Computers.IP_Address LIKE '%.100'
ORDER BY Computer_Name, Date_of_Record
输出
Date Computer IP Version Mac
2014-10-24 COMP001 10.10.10.10 12.1.3001.165 NULL
2014-10-25 COMP001 10.10.10.10 12.1.3001.165 NULL
2014-10-26 COMP001 10.10.10.10 12.1.3001.165 NULL
2014-10-27 COMP001 10.10.10.10 12.1.4013.4013 NULL
2014-10-28 COMP001 10.10.10.10 12.1.4013.4013 NULL
2014-10-29 COMP001 10.10.10.10 12.1.5773.2276 NULL
如何改变SELECT DISTINCT
语句,因此它最早输出具有鲜明版本记录日期,即
Date Computer IP Version Mac
2014-10-24 COMP001 10.10.10.10 12.1.3001.165 NULL
2014-10-27 COMP001 10.10.10.10 12.1.4013.4013 NULL
2014-10-29 COMP001 10.10.10.10 12.1.5773.2276 NULL
@Pradeep
您的解决方案输出
Date Computer IP Version Mac
2014-10-17 COMP001 10.10.10.10 12.1.3001.165 NULL
2014-10-17 COMP002 10.10.10.11 12.1.4013.4013 NULL
2014-10-17 COMP003 10.10.10.12 12.1.5773.2276 NULL
2014-10-17 COMP004 10.10.10.14 11.0.5003.2276 NULL
@ 1010和@AWinkle
如果我运行
SELECT DISTINCT Computer_Name, IP_Address, Agent_Version
FROM dbo.Computers
WHERE Computer_Name in (SELECT Computer_Name
FROM dbo.Computers
GROUP BY Computer_Name
HAVING COUNT(DISTINCT Agent_Version) > 1)
AND dbo.Computers.COMPUTER_NAME LIKE '%s001'
AND dbo.Computers.IP_Address LIKE '%.100'
ORDER BY Computer_Name
然后我得到
Computer IP Version Mac
COMP001 10.10.10.10 12.1.3001.165 NULL
COMP001 10.10.10.10 12.1.4013.4013 NULL
COMP001 10.10.10.10 12.1.5773.2276 NULL
如何修改SQL语句,所以它增加了相应Date_of_Record
列
当您将'DISTINCT'关键字放在版本而不是Date_of_Record旁边时会发生什么? – IronMan84 2014-10-29 18:36:16
@ IronMan84我得到'错误的语法......' – Glowie 2014-10-29 18:38:38
@ IronMan84不可能。 “DISTINCT”适用于整行,而不适用于任何单独的列。 – 2014-10-29 18:40:43