本查詢的目標是將按行組織的資料轉換為列,其中每一列代表輸入行中的特定值。
考慮以下表格:
月份 | 数值 |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
4 | 400 |
5 | 500 |
6 | 600 |
我們的目標是將資料透視,以便輸出表如下所示:
一月 | 二月 | 三月 | 四月 | 五月 | 六月 |
---|---|---|---|---|---|
100 | 200 | 300 | 400 | 500 | 600 |
從 Oracle 11g 開始,PIVOT 操作符提供了一種直接的方法來實現這一點:
<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>
此查詢使用帶有 'FOR' 子句的 PIVOT 運算子來指定透視列和關聯值。透過按 'month' 列分組資料並使用 SUM() 聚合 'value' 列,我們獲得了所需的輸出,其中每個月份都有其對應的值。
以上是如何使用 Oracle SQL 的 PIVOT 運算子將行資料轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!