我的报告表如下:报告(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
你可以建议我怎么做吗?我研究使用枢轴,但我不知道如何申请?
提前致谢!
答案 0 :(得分:2)
使用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 studentname
答案 1 :(得分:1)
您需要使用支点
FROM (
SELECT CUST, PRODUCT, QTY
FROM Product) up
PIVOT (SUM(QTY) FOR CUST IN (FRED, KATE)) AS pvt
ORDER BY PRODUCT
GO
参见示例:SQL Pivot
答案 2 :(得分:0)
我使用了透视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
以及下面是关于枢轴的更多示例 http://blog.sqlauthority.com/2008/06/07/sql-server-pivot-and-unpivot-table-examples/