use*_*646 10 sql sql-server pivot sql-server-2008 sql-server-2008-r2
我有列的表格如下:
Sr.no Subject No of class attended
-------------------------------------
1 English 3
2 Maths 4
3 SocialScience 5
Run Code Online (Sandbox Code Playgroud)
我希望这种格式的表格
English Maths SocialScience
---------------------------------
3 4 5
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Select case when subject ='Maths' then COUNT(No_of_Candidates) else null end as Maths
Run Code Online (Sandbox Code Playgroud)
但有了这个,我得到这样的数据:
English Maths SocialScience
---------------------------------
3
4
5
Run Code Online (Sandbox Code Playgroud)
请帮帮我怎么解决这个问题..
正如你所说,你不希望输出像这样:
English Maths SocialScience
---------------------------------
3
4
5
Run Code Online (Sandbox Code Playgroud)
您需要使用这样的子查询:
SELECT English,Maths,SocialScience
FROM (
SELECT Subject,No_of_class_attended
FROM mytable) up
PIVOT
(Sum([No_of_class_attended])
for Subject in ([English],[Maths],[SocialScience])) p
Run Code Online (Sandbox Code Playgroud)
输出:
English Maths SocialScience
---------------------------------
3 4 5
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅SQL SERVER - PIVOT和UNPIVOT表示例