お世話になります。
下記のテーブルから下記の条件で
データを出力する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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- フリーソフト パソコンで、フォルダの最下層を探索してフォルダ名に連番を挿入するアプリを探しています。 例: アルフ 2 2023/06/09 22:04
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) Excelのマクロについて 1 2023/04/17 17:22
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽出したデータを修正して元の...
-
ACCESSの集計クエリで3件ある...
-
ACCESSのクエリで同じSQL文だが...
-
エクセル関数 文字(ハイフン...
-
SQL 変化を知りたい
-
SQLを駆使したデータ抽出ってど...
-
アクセス クエリ-で空白以外の...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
select句副問い合わせ 値の個...
-
SQL文で右から1文字だけ削除す...
-
複数テーブルのMAX値の行データ...
-
OracleのSQL*PLUSで、デー...
-
ファイル書込みで一行もしくは...
-
SELECTの結果で同一行を複数回...
-
Access を×ボタンで閉じ...
-
レコードが存在しなかった場合
-
Excelで、改行がある場合の条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
抽出したデータを修正して元の...
-
ACCESSの集計クエリで3件ある...
-
エクスプローラーで「2つの条件...
-
SQLを駆使したデータ抽出ってど...
-
<SQL>条件付きで最小値レコード...
-
エクセル関数 文字(ハイフン...
-
MS-DOSコマンドプロンプトを途...
-
アクセス クエリ-で空白以外の...
-
SQLServerからエクセルにデータ...
-
空白文字とスペースの検索
-
ACCESSのクエリで同じSQL文だが...
-
LIKE *ABC* が ACCESSでは使え...
-
Excel VBA:セルを新旧1つずつ...
-
商品テーブルからカテゴリ別の...
-
HTMLファイルから、特定の部分...
-
VBA CSVファイルを文字列に
-
エクセルデータの末尾の改行を...
-
ACCESSで「"」を検索する
-
日付データの抽出方法を教えて...
-
【Oracle】欲しいデータを含め...
おすすめ情報