繁体   English   中英

在SQL Server中将数据透视表行按组列

[英]Pivot Rows to Column By Group in SQL Server

我正在寻找可以在SQL Server 2008中使用group by将行转为列的代码。

这是我的桌子:

Name   |  Stdy   |  Val
-------+---------+-------
Kunjan | Technic |  80
Kunjan | Sains   |  90
Kunjan | Sport   |  60
Shone  | Technic |  60
Shone  | Sains   |  80
Shone  | Sport   |  70
Peudd  | Technic |  85
Peudd  | Sains   |  75
Peudd  | Sport   |  90

我最终想要显示的是这样的(对于上面的数据):

Stdy    | Kunjan | Shone | Peudd
--------+--------+-------+-------
Technic |  80    |  60   |  85
Sains   |  90    |  80   |  75
Sport   |  60    |  70   |  90

任何帮助,将不胜感激。

提前致谢。

这可以使用PIVOT运算符完成

select  *
from    yourtable
        pivot 
        (
            max(Val)
            for Name in ([Kunjan], [Shone], [Peudd])
        ) p

或条件CASE语句。 有很多示例,只需对其进行搜索

编辑:动态案例

declare @sql    nvarchar(max),
        @col    nvarchar(max)

select  @col    = isnull(@col + ',', '') + Name
from    yourtable
group by Name

print   @col 

select  @sql    = 
'
select  *
from    youtable
        pivot 
        (
            max(Val)
            for Name in (' + @col + ')
        ) p
'

print   @sql
exec    sp_executesql @sql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM