SELECT 'COUNT=' + CONVERT(VARCHAR(64), COUNT(s.company)) AS sites
FROM site s
WHERE s.sitetype = 'om'
AND s.status = 1
EXCEPT
SELECT DISTINCT sg.company
FROM snmpmibdevice AS sdevice
JOIN site sg
ON sg.guid = sdevice.siteguid
JOIN snmpmibdata sdata
ON sdata.snmpmibdeviceguid = sdevice.snmpmibdeviceguid
WHERE sdata.sampletimestamp > Dateadd (mi, -15, Getutcdate())
AND sg.sitetype = 'OM'
基本上,我正在尝试从中返回公司名称的数量。如果我删除计数并只选择“S.Company”,我将获得2个值(我想要“COUNT = 2”),但是使用计数它将出现34条记录(COUNT = 34)。
我会非常感激任何帮助。谢谢!
DISTINCT
关键字,因为默认情况下EXCEPT
已经意味着EXCEPT DISTINCT
(令人惊讶的是,SQL Server不支持显式的EXCEPT DISTINCT
并会生成一个“语法错误”信息,而EXCEPT ALL
则会生成更有意义的错误信息:“不支持EXCEPT操作符的'ALL'版本”。实际上,即使您想覆盖EXCEPT DISTINCT
,也无法这样做,即“...除了选择全部...”仍将为您提供“DISTINCT”结果...这是一件好事 :) - onedaywhenUNION
,INTERSECT
,EXCEPT
)与DISTINCT
关键字组合时都会生成语法错误。我同意,这很奇怪,因为在所有其他接受DISTINCT
的地方,ALL
也是一个选项(尽管默认)。所以,如果这三个运算符接受ALL
,为什么不允许DISTINCT
呢... - Andriy M