使用SQL行轉列函式pivot遇到的問題

2022-07-03 05:24:13 字數 797 閱讀 1728

背景:對投票的結果按照單位進行匯**計,資料庫中表記錄的各個賬號對各個選項的投票記錄。馬上想到乙個解決方案,先根據單位和選項進行group by,然後再行轉列得出單位對各個選項的投票情況。

with list as (

select groupid,answer,count(1) as num from vote group by groupid,answer

)select * from list pivot(sum(num) for answer in (1,2,3,4,5,6)) pvt

ps:資料庫中記錄的投票選項是1 2 3這樣的,果然無意中就留下了乙個坑!

一臉懵逼,為啥別人的demo都跑的這麼流暢啊!這個報錯提示也沒什麼頭緒!沒辦法還是要硬著頭皮上啊!然後網上就各種pivot關鍵字找找找!哎,突然發現有人在sql中對pivot中列名部分用將各個列名包起來了。恍然大悟,這個報錯不就是列名或者說欄位名不能直接用數字開頭!!!趕緊改一下,一切ok!!!

with list as (

select groupid,answer,count(1) as num from vote group by groupid,answer

)select * from list pivot(sum(num) for answer in ([1],[2],[3],[4],[5],[6])) pvt

sql 行轉列使用pivot

select from select 商品名稱,銷售數量,月份 from tb helenzhou as t1 被行轉列的字段先在這裡列出來 pivot sum 銷售數量 for 月份 in 1 2 as t2 goup by 除了銷售數量和月份之外的的被上面列出來的其他字段 privot sum ...

PIVOT函式,行轉列

pivot函式的格式如下 pivot 聚合函式 聚合列值 for 行轉列前的列名 in 行轉列後的列名1 行轉列後的列名2 行轉列後的列名3 行轉列後的列名n select from shoppingcart as c pivot count totalprice for week in 1 2 3...

oracle 行轉列 使用pivot函式

由上面的表轉變為下面的表 首先建乙個原始表,並插入測試資料,如下 create table sale2 月份 varchar2 20 銷售量 varchar2 20 insert into sale select 一月份 月份,1 銷售量 from dual union select 二月份 月份,...