SELECT DISTINCTの結果件数をCOUNTする方法

delonghi
2013-12-18 08:35 2007 2
SQL SERVER 2005 EXPRESS のストアドプロシージャで、
SELECT結果の件数を、変数 @count に取得したいのですが
DISTINCTの引数が複数あるのが原因なのか、上手くいきません。
目的はテーブル「TBL」から、COMとUSERの組み合わせの
リストを抽出し、その件数を取得する事です。

テーブル名:TBL
COM  USER
---------------
001  A
002  A
003  A
001  B
002  A
003  C

「COMとUSERの組み合わせで、重複するものは取らない」のならば
 SELECT DISTINCT COM,USER
 FROM TBL
で、下記のような結果が得られます。

COM  USER
---------------
001  A
002  A
003  A
001  B
003  C

で、この結果件数である「5」を取りたいのですが
DECLARE @count int
 SELECT @count = COUNT(DISTINCT COM,USER)
 FROM TBL
print @count

と打っても失敗します。
( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。
COUNT DISTINCT(複数項目)が出来ないのならば、
どうすればこの結果の件数を取得できるでしょうか?
どうかご教授授くださいませ。よろしくお願いします。

コメント

2013年 12月 18日 (11:59)
こんにちは。
イノ(inno)です。

下記のようにサブクエリを利用するとできます。


DECLARE @count int

SELECT @count = COUNT(*)
FROM
(
SELECT COM, [USER] FROM TBL GROUP BY COM, [USER]
) A

print @count
delonghi 2013年 12月 19日 (11:15)
ありがとうございます。
上述のサブクエリの記述は判らなかったので非常に助かりました。
大変勉強になりました。