需要帮助sql查询报告?

时间:2014-05-12 12:17:34

标签: sql sql-server sql-server-2008

我的报告表如下:报告(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
你可以建议我怎么做吗?我研究使用枢轴,但我不知道如何申请?

提前致谢!

3 个答案:

答案 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

fiddle

答案 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/

Fiddle