我有如下表格,我想對它們進行轉換。
年 月周型別計數
2021 1 1 A 5
2021 1 1 B 6
2021 1 1 C 7
2021 1 2 A 0
2021 1 2 B 8
2021 1 2 C 9
我希望像下面這樣進行透視。
我希望像下面這樣進行透視。
年 月周A B C
2021 1 1 5 6 7
2021 1 2 0 8 9
我試過像下面這樣的陳述句,但它回傳了很多空列。 我想知道當新的型別被添加時,我必須一個一個地添加列。
select
年。
月。
周。
case when type in ('A') then count end as A。
case when type in ('B') then count end as B。
case when type in ('C') then count end as C。
從起
table
如果有人有意見,請讓我知道。 謝謝
。uj5u.com熱心網友回復:
你可以使用FILTER子句:
SELECT
年, 月, 周。
MAX("count") FILTER (WHERE type = 'A'/span>) as A, -- 2
MAX("count") FILTER (WHERE type = 'B') as B。
MAX("count") FILTER (WHERE type = 'C') as C
FROM mytable
GROUP BY year, month, week -- 1
訂單 by 年, 月, 星期
或者你可以使用CASE子句:
SELECT
年, 月, 周。
MAX (CASE WHEN type = 'A' THEN " count" END) AS A,
MAX (CASE WHEN type = 'B' THEN " count" END) as B,
MAX (CASE WHEN type = 'C' THEN " count" END) AS C
FROM mytable
GROUP BY 年, 月, 星期
訂單 BY 年, 月, 周
- 在這兩種情況下,你都需要執行
GROUP BY動作。 - 這就需要一個聚合函式,像
MAX()或SUM()。最后,你需要應用一種過濾器(CASE或FILTER)來只聚合相關資料。
額外的。請注意,count, year, month, week這些詞是SQL的關鍵詞。為了避免任何復雜的情況,你應該考慮其他的列名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324729.html
標籤:
