Sql 根据同一表中的条件,将多行中的结果合并到一行中
我有一张包含学生成绩(SAG)的表格。我需要根据Sql 根据同一表中的条件,将多行中的结果合并到一行中,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一张包含学生成绩(SAG)的表格。我需要根据ID和ResultGroup显示一行中所有非NULL或'的成绩,并根据ID和ResultGroup在同一表格中显示另一行中所有其他成绩 TABLE - SAG ID RESULTGROUP GRADE ----------------------------- 102 AC C 102 ACPJ B 124 AC A 124 ACPJ
ID
和ResultGroup
显示一行中所有非NULL
或'
的成绩,并根据ID
和ResultGroup
在同一表格中显示另一行中所有其他成绩
TABLE - SAG
ID RESULTGROUP GRADE
-----------------------------
102 AC C
102 ACPJ B
124 AC A
124 ACPJ
242 AC B
242 ACPJ
101 AC D
101 ACPJ C
我试图解决的是如何从ResultGroupACPJ
中获得结果,如果该ID
的等级中存在NULL
或'
,则仅从ResultGroupAC
中获得结果
最终结果?类似于
SAG_COMBINED
ID FinalGrade
-----------------
102 B
124 A
242 B
101 C
虽然这更为紧凑,但只有当涉及的每个
ID
的每个RESULTGROUP
都有一行时,JOIN
才有效,这在问题中没有指定。您是正确的。当ResultGroup的分数可能为空时,我做了这个假设,尽管这是一个很好的观点。谢谢,谢谢亚当,测试过了,一切都好。被投入到这项工作中,我才刚刚开始游泳!
SELECT acpj.ID
, CASE
WHEN acpj.Grade IS NULL OR acpj.Grade = '' THEN ac.Grade
ELSE acpj.Grade
END AS FinalGrade
FROM SAG AS acpj
INNER JOIN SAG AS ac ON acpj.ID = ac.ID
WHERE acpj.ResultGroup = 'ACPJ'
AND ac.ResultGroup = 'AC'