簡體   English   中英

將行旋轉到列

[英]Pivoting rows to columns

以下是我的原始數據:原始數據

我希望數據按如下方式進行透視:透視數據

select cvid, cid,67554,67555,67556,67557 
from #temp2 pivot
    (
    max(lcd)
    for qid in ([67554],[67555],[67556],[67557])
    )as P

這是我試過的代碼。 需要幫助!

兩件事:確保您有一個要旋轉的源表。 源表將包括您希望聚合的列。 在這種情況下,我給了它別名“src”。 其次,當您使用數字作為列名時,請確保使用括號。 或者,列名以字母開頭。 例如,[67554] 為 Col_67554。 我在代碼中提供了那個例子。

select cvid, cid,[67554] as Col_67554,[67555],[67556],[67557] 
    from 
    (select cvid, cid, lcd, qid from #temp2) as src
    pivot
    (
    max(lcd) for qid in ([67554],[67555],[67556],[67557])
    ) p

這是一種可能性,使用相當通用的語法:

select CVID, CID, sum(case when QID = 67554 then LCD else 0 end) as [67554],
                  sum(case when QID = 67555 then LCD else 0 end) as [67555],
                  sum(case when QID = 67556 then LCD else 0 end) as [67556],
                  sum(case when QID = 67557 then LCD else 0 end) as [67557] 
from test1
group by CVID, CID;

我在 SQL Server 2012 的 SSMS 中對此進行了測試。

如果您使用的是 Oracle SQL,請嘗試

select * from (
    select cvid, cid, qid, lcd
    from #temp2
) a
pivot
(
    max(lcd)
    for qid in (67554,67555,67556,67557)
) b
order by cvid;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM