Case in een case gebruiken

Status
Niet open voor verdere reacties.

SQLNube

Nieuwe gebruiker
Lid geworden
19 sep 2011
Berichten
2
Hallo ik heb ooit een basis ANSI/SQL training gedaan maar daar redt ik het niet mee in hetgeen wat ik wil bereiken, kan iemand mij hier s.v.p. mee helpen?

Wat ik wil is dat (zie onderstaande query) wanneer er niet aan Case "as Gereed" voldaan wordt er word gekeken of er dan aan volgende Case "as Pauze" word voldaan enz...

Waarschijnlijk heb ik ook een hele lompe query gemaakt dus als iemand hier ook meer effectieve oplossing heeft dan zou dat een mooie bijkomstigheid zijn. De responstijd op de server is gemiddeld 0,02 seconden dus heeft dit geen prio.

De query:
---------------------------------------------------------------------------------
SELECT *,

(CASE
when agentgroep.agrp = 73 then 'GB/MZ/PR/VO'
when agentgroep.agrp = 72 then 'GGZ/ZK/VV'
when agentgroep.agrp = 71 then 'FM/HA/HU'
else 'onbekend' END) as "AGENTGROEP",

(CASE
when agentgroep.agrp = 73 AND agentgroep.signed_on = 'YES' then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.signed_on = 'YES' then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.signed_on = 'YES' then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as "AANGEMELD",

(CASE
when agentgroep.agrp = 73 AND agentgroep.pri_state = 'AVAIL' then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.pri_state = 'AVAIL' then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.pri_state = 'AVAIL' then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as GEREED",


(CASE
when agentgroep.agrp = 73 AND agentgroep.reason_num = 1 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.reason_num = 1 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.reason_num = 1 then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as "PAUZE",

(CASE
when agentgroep.agrp = 73 AND agentgroep.reason_num = 2 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.reason_num = 2 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.reason_num = 2 then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as "MAIL",

(CASE
when agentgroep.agrp = 73 AND agentgroep.reason_num = 3 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.reason_num = 3 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.reason_num = 3 then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as "NTA",


(CASE
when agentgroep.agrp = 73 AND agentgroep.reason_num = 5 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 72 AND agentgroep.reason_num = 5 then COUNT(DISTINCT agentgroep.ext_num)
when agentgroep.agrp = 71 AND agentgroep.reason_num = 5 then COUNT(DISTINCT agentgroep.ext_num)
else 0 END) as "TRAINING",

(CASE
when agentgroep.agrp = 73 then '1'
when agentgroep.agrp = 72 then '2'
when agentgroep.agrp = 71 then '3'
else 0 END)as "SORTERING"

FROM agentgroep

WHERE (agentgroep.signed_on = 'YES') AND (agentgroep.agrp IN (71,72,73))

GROUP BY agentgroep.agrp
ORDER BY "SORTERING"

--------------------------------------------------------------------------------
Het zou me heel blij maken als iemand hier een oplossing voor heeft. Alvast bedankt voor je reactie en advies.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan