
お世話になります。
下記のテーブルから下記の条件で
データを出力する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
No.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
;
No.4
- 回答日時:
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
じゃダメですか?(未検証ですけど)
No.3
- 回答日時:
スカラ・サブクエリを使う方法も有りますね。
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
No.2
- 回答日時:
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
でどうでしょうか。
No.1
- 回答日時:
同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を外部結合するとできあがり!です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSの集計クエリで3件ある...
-
抽出したデータを修正して元の...
-
エクセル関数 文字(ハイフン...
-
MS-DOSコマンドプロンプトを途...
-
エクセルデータの末尾の改行を...
-
ACCESSのクエリで同じSQL文だが...
-
アクセス クエリ-で空白以外の...
-
Excel VBA:セルを新旧1つずつ...
-
何にかが違うから エラーなんで...
-
Accessで別テーブルの値をフォ...
-
JSPのNULLレコード表示について...
-
実績累計の求め方と意味を教え...
-
OracleのSQL*PLUSで、デー...
-
決定性有限オートマトン
-
Oracleでの文字列連結サイズの上限
-
select句副問い合わせ 値の個...
-
沿線コード
-
外部結合とor条件混在の記述方法
-
サブレンジ分割されたNDB(富士...
-
SELECTの結果で同一行を複数回...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
抽出したデータを修正して元の...
-
ACCESSの集計クエリで3件ある...
-
エクセル関数 文字(ハイフン...
-
ACCESSのクエリで同じSQL文だが...
-
アクセス クエリ-で空白以外の...
-
MS-DOSコマンドプロンプトを途...
-
クエリで・・・・
-
<SQL>条件付きで最小値レコード...
-
セル内の同じデーターを抽出したい
-
エラーメッセージ(Access2000)
-
エクセのオートフィルタ
-
助けてください!iPod touchの...
-
accessで対象データの抽出を行...
-
(Access)コンボックスの値を...
-
エクセルデータの末尾の改行を...
-
access 手順について教えて欲しい
-
さくらレンタルサーバのMysqlの...
-
商品テーブルからカテゴリ別の...
-
Excelで文字列を一つずつ抽出し...
-
SQL文の記述について
おすすめ情報