2011-11-18 69 views
0

我有一张包含学生成绩(SAG)的表格。我需要根据IDResultGroup从一行中显示不是NULL''的所有等级,并且基于同一表中的IDResultGroup从另一行开始显示所有其他等级。根据同一表中的条件将结果合并为多行的一行

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 

我正在试图找出是如何从ResultGroup ACPJ得到的结果,只有那些从ResultGroup AC如果在等级为ID一个NULL''

END RESULT?喜欢的东西...

SAG_COMBINED 

ID  FinalGrade 
----------------- 
102 B 
124 A 
242 B 
101 C 

回答

0
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' 
+0

虽然这是更紧凑,'JOIN'只有当没有为每个'RESULTGROUP'一排每一个作品'ID'参与,尚未在指定的题。 –

+1

你是对的。当ResultGroup的Grade可以为NULL时,我做了这个假设,尽管这是一个好的观点。谢谢。 –

+0

感谢亚当,测试和一切正常。被投入这项工作,只开始游泳! – Mark

相关问题