- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELECT DISTINCTの結果件数をCOUNTする方法)
SELECT DISTINCTの結果件数をCOUNTする方法
このQ&Aのポイント
- SQL SERVER 2005 EXPRESS のストアドプロシージャで、SELECT結果の件数を、変数 @count に取得したいのですが、DISTINCTの引数が複数あるため上手くいきません。
- テーブル「TBL」から、COMとUSERの組み合わせのリストを抽出し、その件数を取得する方法を教えてください。
- COUNT DISTINCT(複数項目)ができない場合、この結果の件数を取得する方法はありますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
COUNT関数は*を除いては複数のフィールドをパラメータに取ることができません。 したがって、2段階でカウントするのが賢明です。 DECLARE @count int SELECT @count = COUNT(*) FROM (SELECT DISTINCT COM,USER FROM TBL) t PRINT @count オマケですが、サブクエリを使わない方法としてはDENSE_RANKを使う方法があります。 まあ、メリットはないですけどね。 DECLARE @count int SELECT TOP 1 @count = DENSE_RANK() OVER (ORDER BY COM,USER) FROM TBL ORDER BY 1 DESC PRINT @count
お礼
jamshid6さんありがとうございます。 上述のサブクエリの記述は判らなかったので非常に助かりました。 大変勉強になりました。 自分で考えて試したのは、 SELECT DISTINCT COM,USER FROM TBL のみの別ストアド[GET_LIST]を作成し、 INSERT INTO ##TEMP_TBL EXEC GET_LIST としてその結果を一時テーブルに格納。 その一時テーブルのレコード数をCOUNT(*)で取得する… という、何ともまどろっこしい手順でしたので コードが汚くなっていました。 教えて頂きました方法で書き直し、期待通りの作動と、 すっきりした構造に出来ました。ありがとうございました。