我有如下的报告表: Report(StudentName,SubJectName,Mark)和下面的示例数据
StudentName    |    SubjectName   |  Mark
Tommy               A                6
Tommy               B                8
Tommy               C                10
Susan               A                7
Susan               B                10所以我想查询并显示如下:
SubjectName  | A | B |  C
Tommy          6   8    10
Susan          7   10   0你能建议我怎么做吗?我研究了pivot,但我不知道如何应用?
提前感谢!
发布于 2014-05-12 20:22:39
使用case语句
select studentname,
max(case when subjectname='A' then mark else 0 end) 'A',
max(case when subjectname='B' then mark else 0 end) 'B',
max(case when subjectname='C' then mark else 0 end) 'C'
from table1
group by studentnamefiddle
发布于 2014-05-12 20:25:06
你需要使用枢轴,
FROM (
SELECT CUST, PRODUCT, QTY
FROM Product) up
PIVOT (SUM(QTY) FOR CUST IN (FRED, KATE)) AS pvt
ORDER BY PRODUCT
GO请参见示例:SQL Pivot
发布于 2014-05-13 10:49:26
我已经使用了pivot SQL,我的问题已经解决了。下面是我的问题
SELECT StudentName, A, B, ISNULL(C,0) as C
FROM (select StudentName, subjectName, Mark from dbo.Student) as src
Pivot(max(mark) for subjectName in(A, B, C))  as pvt下面是有关pivot http://blog.sqlauthority.com/2008/06/07/sql-server-pivot-and-unpivot-table-examples/的更多示例
Fiddle
https://stackoverflow.com/questions/23608825
复制相似问题