2015-02-10 106 views
1

我试图显示SC,DC,DV对每个员工的工作人员,每个人都可以有一个或多个选择,例如eng 1可以有sc和dc。Oracle/SQL多个真实案例陈述

所以需要得到

enter image description here

我使用情况来设置列和数据获取,但不能得到在同一行的数据

SELECT DISTINCT e.ENG_ID, 
      e.NAME, 
      e.SURNAME, 
      e.POST_CODE, 
      CASE 
       WHEN C.CLEARANCE_ID = 1 THEN 'YES' 
       ELSE 'NO' 
      END AS SC, 
      CASE 
       WHEN C.CLEARANCE_ID = 2 THEN 'YES' 
       ELSE 'NO' 
      END AS BS, 
      CASE 
       WHEN C.CLEARANCE_ID = 3 THEN 'YES' 
       ELSE 'NO' 
      END AS DV 
FROM MAN_ENGINEERS e 
    left join MAN_CLEARANCE c 
      ON e.ENG_ID = c.ENG_ID; 

希望这样做在这些列感

+0

你可能有每个工程的多个间隙,所以你要哪一个? – Mihai 2015-02-10 22:16:41

回答

2

利用最高,试试这个

SELECT  e.ENG_ID, 
      e.NAME, 
      e.SURNAME, 
      e.POST_CODE, 
      MAX 
      (
       CASE 
       WHEN C.CLEARANCE_ID = 1 THEN 'YES' 
       ELSE 'NO' 
       END 
      ) AS SC, 
      MAX 
      (
       CASE 
       WHEN C.CLEARANCE_ID = 2 THEN 'YES' 
       ELSE 'NO' 
       END 
      ) AS BS, 
      MAX 
      (
       CASE 
       WHEN C.CLEARANCE_ID = 3 THEN 'YES' 
       ELSE 'NO' 
       END 
      ) AS DV 
FROM MAN_ENGINEERS e 
    left join MAN_CLEARANCE c 
      ON e.ENG_ID = c.ENG_ID 
GROUP BY e.ENG_ID, 
      e.NAME, 
      e.SURNAME, 
      e.POST_CODE, ; 
+0

完全完全忘了那个。非常感谢 – 2015-02-10 23:02:33