我正在寻找一种可以在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
任何帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
这可以使用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