プロが教えるわが家の防犯対策術!

皆様はじめまして。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にて取得できないかと悩んでおります。

皆様、どうかよろしくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/18 23:16

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
みたいな感じで取得できるようになる(はず・・・

この回答への補足

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

夜分遅くに申し訳ありませんがよろしくお願い致します。

補足日時:2007/11/18 02:50
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/18 03:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!