2011-11-18 5 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 

는 내가 해결하려고 노력하고있어 그 ID의 학년에 NULL 또는 ''가있는 경우 ResultGroup ACPJ에서 결과를 얻을 만 ResultGroup AC에서하는 방법입니다.

최종 결과? 뭔가 같은 ...

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

이 더 컴팩트'모든'RESULTGROUP'에 대한 행마다 거기 경우 JOIN'에만 작동'ID', 참여에 지정되지 않은 반면 문제. –

+1

정확합니다. ResultGroup에 대한 등급이 NULL 일 수 있다고 가정 할 때 좋은 가정이지만이 가정을했습니다. 감사. –

+0

감사합니다. 아담, 괜찮아요. 이 작품에 던져지고 수영하기 시작했습니다! – Mark

관련 문제