“部門別売上”表から、部門コードごと、期ごとの売上を得るSQL文はどれか。
横持ちを縦持ちに変換するにはUNIONで行を連結する
部門別売上:
〔問合せ結果〕:
| 部門コード | 第1期売上 | 第2期売上 |
|---|---|---|
| D01 | 1,000 | 4,000 |
| D02 | 2,000 | 5,000 |
| D03 | 3,000 | 8,000 |
| 部門コード | 期 | 売上 |
|---|---|---|
| D01 | 第1期 | 1,000 |
| D01 | 第2期 | 4,000 |
| D02 | 第1期 | 2,000 |
| D02 | 第2期 | 5,000 |
| D03 | 第1期 | 3,000 |
| D03 | 第2期 | 8,000 |
選択肢
- アSELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 INTERSECT (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
- イSELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
- ウSELECT A.部門コード, '第1期' AS 期, A.第1期売上 AS 売上 FROM 部門別売上 A CROSS JOIN (SELECT B.部門コード, '第2期' AS 期, B.第2期売上 AS 売上 FROM 部門別売上 B) T ORDER BY 部門コード, 期
- エSELECT A.部門コード, '第1期' AS 期, A.第1期売上 AS 売上 FROM 部門別売上 A INNER JOIN (SELECT B.部門コード, '第2期' AS 期, B.第2期売上 AS 売上 FROM 部門別売上 B) T ON A.部門コード = T.部門コード ORDER BY 部門コード, 期
正解と解説
正解:イ SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
1行に第1期と第2期の売上が横に並んだ表を、期ごとの縦持ちに変換したい。第1期を取り出す問合せと第2期を取り出す問合せをそれぞれ作り、UNIONで行方向に連結すれば求める結果になる。UNIONは列数と列のデータ型が一致していれば結果を縦に結合できる。
選択肢ごとの解説
- アINTERSECTは両方に共通する行だけを返すため、期の値が異なるこの2つでは結果が空になる。
- イ正しい。第1期と第2期の問合せをUNIONで縦に連結すれば期ごとの行が得られる。
- ウCROSS JOINは全組合せの直積となり、行数が増えすぎるうえ列構成も異なる。
- エINNER JOINは行を横に結合するので、期ごとに行を分ける結果にはならない。
同じ分野の他の問題
- 関係データベースのビューに関する記述のうち、適切なものはどれか。2025年度 秋期 午前 問28
- 更新可能なビューを作成するSQL文はどれか。ここで、SQL文中に現れる基底表は全て更新可能とする。2023年度 秋期 午前 問28
- "東京在庫"表と"大阪在庫"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表す。 〔S…2020年度 10月試験 午前 問29
- 表に対するSQLのGRANT文の説明として、適切なものはどれか。2020年度 10月試験 午前 問26
- 図のような関係データベースの“注文”表と“注文明細”表がある。“注文”表の行を削除すると、対応する“注文明細”表の行が、…2019年度 秋期 午前 問27
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。