• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELECT DISTINCTの結果件数をCOUNTする方法)

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

このQ&Aのポイント
  • SQL SERVER 2005 EXPRESS のストアドプロシージャで、SELECT結果の件数を、変数 @count に取得したいのですが、DISTINCTの引数が複数あるため上手くいきません。
  • テーブル「TBL」から、COMとUSERの組み合わせのリストを抽出し、その件数を取得する方法を教えてください。
  • COUNT DISTINCT(複数項目)ができない場合、この結果の件数を取得する方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.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

wendy0303
質問者

お礼

jamshid6さんありがとうございます。 上述のサブクエリの記述は判らなかったので非常に助かりました。 大変勉強になりました。 自分で考えて試したのは、  SELECT DISTINCT COM,USER  FROM TBL のみの別ストアド[GET_LIST]を作成し、  INSERT INTO ##TEMP_TBL EXEC GET_LIST としてその結果を一時テーブルに格納。 その一時テーブルのレコード数をCOUNT(*)で取得する… という、何ともまどろっこしい手順でしたので コードが汚くなっていました。 教えて頂きました方法で書き直し、期待通りの作動と、 すっきりした構造に出来ました。ありがとうございました。

関連するQ&A

専門家に質問してみよう