wie zu entschlüsseln, mit mehreren Bedingungen mit gleichen Bedingungen mit diff-Ergebnis
Ich habe eine Frage, wie kann ich auswerten, sql, wenn id=5 im Fall der "Directory Assistance" es sollte erhalten die attr_1 als Ausgang und mit id=5 und "Long-Roaming" sollte es geben, attr_35/60.
sum(decode(id,1,attr_35 / 60,
5,'Long Roaming',attr_35/60,
5,'Directory Assistance',attr_1))total
with ce as
(
select case
when id = 1 and attr_31 like 'Roam%'
then 'A1'
when id = 5 and attr_30 like 'Dir%' and attr_31 like 'Standard%'
then 'Directory Assistance'
when id = 5 and attr_30 like 'Dir%' and attr_31 like 'Roam%'
then 'Directory Assistance Roaming'
when id = 5 and attr_30 like 'Long Distance%' and attr_31 like 'Roam%'
then 'Long Roaming'
end usagetype
, sum(decode(id,1,attr_35 / 60, 5,attr_35/60)) total
from table
where ce.account_num in ('A4','A5','A6')
group by
case
when id = 1 and attr_31 like 'Roam%'
then 'A1'
when id = 5 and attr_30 like 'Dir%' and attr_31 like 'Standard%'
then 'Directory Assistance'
when id = 5 and attr_30 like 'Dir%' and attr_31 like 'Roam%'
then 'Directory Assistance Roaming'
when id = 5 and attr_30 like 'Long Distance%'and attr_31 like 'Roam%'
then 'Long Roaming'
end
)
select usagetype,total from ce
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ich würde einkapseln der Fall-Logik und alle anderen Spalten müssen Sie möglicherweise in Ihrem CTE:
Führen Sie dann die Gruppe, indem Sie auf der CTE (dadurch wird vermieden, zu schreiben, die
CASE
Logik zweimal):-Drittel, da die Dekodierung funktioniert nur auf eine einzelne Spalte/Wert zu einem Zeitpunkt, benötigen Sie einen zweiten
case
:Könnte man dann kombinieren der ersten und zweiten terms in Ihrem Fall: