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


背景:對投票的結果按照單位進行匯總統計,數據庫中表記錄的各個賬號對各個選項的投票記錄。馬上想到一個解決方案,先根據單位和選項進行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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM