繁体   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