2016-08-02 8 views
-2
select * 
from 
(
    select temp.agamaid, temp.jum_peg, nvl(temp.jeniskelamin,'L') jeniskelamin, 
      case when temp.jeniskelamin = 'L' then 1 
       when temp.jeniskelamin = 'P' then 2 
       else 0 
      end as num 
    from 
    (
     select agama.agamaid, AGAMA.agama, PEGAWAI.jeniskelamin, 
       count(PEGAWAI.pegawaiid) jum_peg 
     from agama 
      left join pegawai on PEGAWAI.agamaid = AGAMA.agamaid 
     group by AGAMA.agamaid, AGAMA.agama, PEGAWAI.jeniskelamin 
    ) temp 
) temp 
    left join master_jeniskelamin mjk on temp.jeniskelamin = mjk.id_jk 
order by temp.agamaid, temp.jeniskelamin 

Diese Abfrage gib mir nur ein Ergebnis wie folgt aus:Wie Einfügen von temporären (ohne Einfügen in Tabelle) in dieser Abfrage?

Not my expectation output

Aber ich will Ergebnis, dass agamaid in (3,4,5) hat auch eine andere jeniskelamin, die sie noch nicht haben .

Könnten Sie mir bitte helfen? :)

Antwort

0

Versuchen Sie folgendes:

SELECT 
    a.agamaid, 
    COUNT(p.pegawaiid) AS jum_peg, 
    p.jeniskelamin, 
    CASE 
     WHEN p.jeniskelamin = 'L' THEN 1 
     WHEN p.jeniskelamin = 'P' THEN 2 
     ELSE 0 
    END AS num, 
    mjk.id_jk 
FROM 
    master_jeniskelamin mjk 
    CROSS JOIN agama a 
    LEFT JOIN pegawai p 
     ON p.jeniskelamin = mjk.id_jk 
     AND p.agamaid = a.agamaid 
GROUP BY 
    a.agamaid, 
    mjk.id_jk, 
    p.jeniskelamin 
ORDER BY 
    a.agamaid, 
    mjk.id_jk 
Verwandte Themen