Matlamat pertanyaan ini adalah untuk menukar data tersusun baris kepada lajur, dengan setiap lajur mewakili nilai tertentu dalam baris input.
Pertimbangkan borang berikut:
月份 | 数值 |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
4 | 400 |
5 | 500 |
6 | 600 |
Matlamat kami adalah untuk memutar data supaya jadual output kelihatan seperti ini:
一月 | 二月 | 三月 | 四月 | 五月 | 六月 |
---|---|---|---|---|---|
100 | 200 | 300 | 400 | 500 | 600 |
Bermula dengan Oracle 11g, pengendali PIVOT menyediakan cara yang mudah untuk melakukan ini:
<code class="language-sql">CREATE TABLE tq84_pivot ( month NUMBER, value NUMBER ); INSERT INTO tq84_pivot VALUES(1, 100); INSERT INTO tq84_pivot VALUES(2, 200); INSERT INTO tq84_pivot VALUES(3, 300); INSERT INTO tq84_pivot VALUES(4, 400); INSERT INTO tq84_pivot VALUES(5, 500); INSERT INTO tq84_pivot VALUES(6, 600); -- 插入额外的行以进行演示 INSERT INTO tq84_pivot VALUES(1, 400); INSERT INTO tq84_pivot VALUES(2, 350); INSERT INTO tq84_pivot VALUES(4, 150); SELECT * FROM tq84_pivot PIVOT ( SUM (value) AS sum_value FOR (month) IN (1 AS month_jan, 2 AS month_feb, 3 AS month_mar, 4 AS month_apr, 5 AS month_mai, 6 AS month_jun, 7 AS month_jul, 8 AS month_aug, 9 AS month_sep, 10 AS month_oct, 11 AS month_nov, 12 AS month_dec) );</code>
Pertanyaan ini menggunakan operator PIVOT dengan klausa 'FOR' untuk menentukan lajur pangsi dan nilai yang berkaitan. Dengan mengumpulkan data mengikut lajur 'bulan' dan mengagregatkan lajur 'nilai' menggunakan SUM(), kami mendapat output yang diingini di mana setiap bulan mempunyai nilai yang sepadan.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Baris ke Lajur Menggunakan Operator PIVOT Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!