アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

下記のテーブルから下記の条件で
データを出力するSQL文を作成したいのです。
アドバイスお願い致します。

条件1:NAMEはAを抽出
条件2:ICHIはグループ集計
条件3:ITEMはD2とD3を抽出


TESTテーブル

NAME ICHI ITEM DATA
----- ---- ---- ----
A A1 D1 1
A A1 D2 2
A A1 D3 3
A A1 D4 4
A A2 D1 10
A A2 D2 20
A A2 D3 30
A A2 D4 40
B A3 D1 100
B A3 D2 200
B A3 D3 300
B A3 D4 400

データ出力結果

NAME ICHI DATA DATA
----- ---- ---- ----
A A1 2 3
A A2 20 30

A 回答 (5件)

#3 です。

#4 さんとほとんど同じですが、その後気付いたのが MAX を使う方法でした。

SELECT
NAME, ICHI,
MAX(CASE WHEN ITEM = 'D2' THEN DATA ELSE NULL END) AS DATA_D2,
MAX(CASE WHEN ITEM = 'D3' THEN DATA ELSE NULL END) AS DATA_D3
FROM TEST a
WHERE NAME = 'A'
GROUP BY NAME, ICHI
;
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
助かりました。

お礼日時:2012/06/15 13:30

select NAME,ICHI


,sum(case when ITEM = 'D2' then DATA else 0 end) as DATA_D2
,sum(case when ITEM = 'D3' then DATA else 0 end) as DATA_D3
where NAME = 'A'
group by NAME,ICHI
order by ICHI

じゃダメですか?(未検証ですけど)
    • good
    • 0

スカラ・サブクエリを使う方法も有りますね。



SELECT
NAME, ICHI,
(SELECT DATA FROM TEST b WHERE ITEM = 'D2'
AND a.NAME = b.NAME AND a.ICHI = b.ICHI) AS DATA_D2,
(SELECT DATA FROM TEST c WHERE ITEM = 'D3'
AND a.NAME = c.NAME AND a.ICHI = c.ICHI) AS DATA_D3
FROM TEST a
WHERE NAME = 'A'
GROUP BY NAME, ICHI
;

参考URL:http://codezine.jp/article/detail/751?p=1
    • good
    • 0

SELECT D2.NAME,D2.ICHI,D2.DATA,D3.DATA


FROM TEST D2 INNER JOIN TEST D3
ON D3.NAME=D2.NAME AND D3.ICHI=D2.ICHI AND D3.ITEM='D3'
WHERE D2.NAME='A' AND D2.ITEM='D2'
ORDER BY 2
でどうでしょうか。
    • good
    • 0

同TESTテーブルに下記のQuery3つ用意します。



1.Main
 NAMEとICHIの2項目でグループ化
 条件として NAMEが"A"、ITEMが"D2","D3"
 すると、以下のようになります。
 NAME ICHI
 ----- ----
 A A1
 A A2
2.Sub1
 NAMEとICHIの2項目でグループ化
 DATAを集計(SUM)します。
 条件として NAMEが"A"、ITEMが"D2"のみ
 すると、以下のようになります。
 NAME ICHI DATA1
 ----- ---- ----
 A A1 2
 A A2 20
3.Sub2
 NAMEとICHIの2項目でグループ化
 DATAを集計(SUM)します。
 条件として NAMEが"A"、ITEMが"D3"のみ
 すると、以下のようになります。
 NAME ICHI DATA2
 ----- ---- ----
 A A1 3
 A A2 30

※そして、MainにSub1,Sub2を外部結合するとできあがり!です。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す