February 2022
Intermediate to advanced
560 pages
8h 5m
Japanese
この章で説明するクエリは、既存の章に入れるには内容が長いか、解決する問題が現実的なものではなくて楽しいものです。この章は 「楽しい」ものにしたので、紹介するレシピが、読者の現実の問題に応用できるかどうかにはわかりません。しかし、このクエリは面白いので、ぜひ本書で扱いたいと思いました。
結果セットの行を列に変換するクロス集計レポートを作成したい。従来の変換(ピボット)方法は知っているが、違う方法を試してみたい。特に、CASE式や結合を使わずに次のような結果セットを返したい。
DEPT_10 DEPT_20 DEPT_30 DEPT_40
------- ----------- ----------- ----------
3 5 6 0
PIVOT演算子を使って、CASE式や結合を追加せずに求められている結果セットを作成します。
select [10] as dept_10,[20] as dept_20,[30] as dept_30,[40] as dept_40from (select deptno, empno from emp) driver ❶pivot (count(driver.empno)for driver.deptno in ([10],[20],[30],[40]) ❷) as empPivot
PIVOT演算子は最初は奇妙に思えるかもしれませんが、この演算子が解決策の中で行う演算は、以下に示すもっとなじみのある転置クエリと技術的には同じです。
select sum(case deptno ...Read now
Unlock full access