• ベストアンサー

SQLにて列の値を一まとめにしてカウントできないでしょうか?

皆様はじめまして。SQL勉強中のものです。 本日はどうしても解決できないことがありますので質問させていただきます。 テーブルAにCONDITIONという列があり、そこには1~5の値が入ります。 このCONDITION列に1~5それぞれ何件あるかを取得したいと考えております。単純にcount関数にて1~5のレコード数を取得するならば以下のSQLで取得可能と思います。 SELECT COUNT(CONDITION) FROM A WHERE CONDITION = '1' 以上をWHERE条件を変えて5回繰り返し。 これだと5回SQLを発行することになります。 これを一回のSQLにて取得できないかと悩んでおります。 皆様、どうかよろしくお願い致します。

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

  • ベストアンサー
回答No.2

これで試してみてください。 SELECT sum(case when CONDITION = '1' then 1 else 0 end) as cnt1, sum(case when CONDITION = '2' then 1 else 0 end) as cnt2, sum(case when CONDITION = '3' then 1 else 0 end) as cnt3, sum(case when CONDITION = '4' then 1 else 0 end) as cnt4, sum(case when CONDITION = '5' then 1 else 0 end) as cnt5 FROM A

luvelysion
質問者

お礼

回答ありがとうございます。早速試してみたいと思います。まだまだ勉強不足ですのでこれからもがんばりたいと思います。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

SQL serverは使ったこと無いのでよくわからないんですが GROUP BY 使えば一発かと思います。 SELECT CONDITION,COUNT(CONDITION) FROM A GROUP BY CONDITION あれこうだっけかな?検証してないのでちょっとあやふや(^_^;) [CONDITION],[COUNT(CONDITION)] 1,205 2,102 3,12 4,95 5,123 みたいな感じで取得できるようになる(はず・・・

luvelysion
質問者

お礼

まことにありがとうございます。補足のほうに間違って書いてしまったのですが回答いただけるとありがたいです。よろしくお願い致します。

luvelysion
質問者

補足

さっそくの回答ありがとうございます。さらにお伺いしますが下記のような形で取得することは可能でしょうか。 [1],[2],[3],[4],[5] ← CONDITION列の値 205,102,12 ,95 ,123 ← それに対する件数 夜分遅くに申し訳ありませんがよろしくお願い致します。

関連するQ&A