問題
“部門別売上”表から、部門コードごと、期ごとの売上を得る SQL 文はどれか。

選択肢
- 1SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 INTERSECT (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
- 2SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
- 3SELECT A.部門コード, '第1期' AS 期, A.第1期売上 AS 売上 FROM 部門別売上 A CROSS JOIN (SELECT B.部門コード, '第2期' AS 期, B.第2期売上 AS 売上 FROM 部門別売上 B) T ORDER BY 部門コード, 期
- 4SELECT 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 部門コード, 期
正解
2. SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
詳しい解説を見る解説を閉じる
解説
“部門別売上”表は 1 行に第 1 期売上と第 2 期売上が横に並んでいる。これを「部門コード・期・売上」の縦持ち形式にするには、第 1 期分を抽出する SELECT と第 2 期分を抽出する SELECT を UNION で縦に連結すればよい。INTERSECT は共通行のみ、CROSS JOIN は直積、INNER JOIN は横方向の結合となり目的の結果が得られない。よってイが正解。(出典: 令和3年度 秋期 応用情報技術者試験 午前 問29)
一問一答
全400問を繰り返し学習