2012-08-04 65 views
0

第一个图像是我的查询输出。现在我想分组这个主题,以便它变得像第二个图像。可能吗?谢谢您的帮助。T SQL关于分组的查询

select Subject, Grade, case when Grade >= 50 Then '1' else '0' end as Pass, case when Grade < 50 Then '1' else '0' end as Fail from Grade_report

OUTPUT:

enter image description here

我要的是:

enter image description here

回答

0

你的规格是不是非常精确;你对合并记录的年级有什么期望,应该只写1或0还是合计通过和失败的总和?

下将产生的输出,它需要的传球MAX的档次和SUM /失败信息:

WITH GradePassFail AS (
    SELECT 
     Subject, 
     Grade, 
     CASE WHEN Grade >= 50 THEN 1 ELSE 0 END AS Pass, 
     CASE WHEN Grade < 50 THEN 1 ELSE 0 END AS Fail 
    FROM Grade_report 
) 
SELECT Subject, MAX(Grade) AS Grade, SUM(Pass) AS Pass, SUM(Fail) AS Fail 
FROM GradePassFail 
GROUP BY Subject 
+0

是有可能只有一个select语句生成相同的输出? – kevin 2012-08-05 04:22:47

+0

我不确定你的意思,它是一个声明...公用表表达式定义了一个视图然后使用,但最终查询优化器将它看作一个查询。你当然可以通过嵌套查询替换CT​​E,这将是等价的。 – Lucero 2012-08-05 11:14:33