3
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)になります。SQL:EXCEPT使用時にCOUNTを取得する方法
私は助けていただきありがとうございます。ありがとう!
[インスタントSQLフォーマッタ](http://www.dpriver.com/pp/sqlformat.htm) "()からSELECT COUNT(*)" の全体を包みます。これを使って。大好きです。 –
このコンテキストでは実際には関係ありませんが、カウントする行数はいくつですか?** VARCHAR(64)**?最も広い8バイトのbigint値を持っていれば、 'CONVERT(varchar(20)、COUNT(s.company))'で十分でしょう。 –
'... EXCEPT SELECT DISTINCT ...' - 'EXCEPT'はデフォルトで' EXCEPT DISTINCT'を意味するので、 'DISTINCT'キーワードは必要ありません(奇妙なことに、SQL Serverは明示的な' EXCEPT DISTINCT'をサポートしていません。 'EXCEPT ALL'はより意味のあるエラーを生成しますが、 'EXCEPT演算子の' ALL 'バージョンはサポートされていません。実際には、 'EXCEPT DISTINCT'をオーバーライドすることはできません。つまり、' ... EXCEPT SELECT ALL ... 'は' DISTINCT'の結果を返します。これは良いことです:) – onedaywhen