Ich habe ein folgendes Szenario vor:Wie ignoriere ich Nullen, wenn Ausdrücke analytische Funktionen verwenden?
SELECT
NAME,
CASE WHEN ECHUE LIKE 'echue'
THEN sum(RESTE) over (partition by NAME ,ECHUE)
END
as TOT_RESTE_ECHUE,
sum(RESTE) over (partition by NAME) as TOT_RESTE_CLIENT,
FROM TABLE
Was ich in der Tabelle haben:
Das ist mein SQL ist
Name | ECHUE |RESTE
-----------|-----------|---------
John | ECHUE | 20
John | ECHUE | 20
John | null | 20
John | ECHUE | 20
Was ich bekommen:
Name | ECHUE |RESTE |TOT_RESTE_ECHUE | TOT_RESTE_CLIENT
-----------|-----------|---------|----------------|------------------
John | ECHUE | 20 |60 |80
John | ECHUE | 20 |60 |80
John | null | 20 |null |80
John | ECHUE | 20 |60 |80
Was i wollen:
Name | ECHUE |RESTE |TOT_RESTE_ECHUE | TOT_RESTE_CLIENT
-----------|-----------|---------|----------------|-------------------
John | ECHUE | 20 |60 |80
John | ECHUE | 20 |60 |80
John | null | 20 |60 |80
John | ECHUE | 20 |60 |80
Ich benutze ORACLE Datenbank Version 12. Ich kann nicht Where ECHUE IS NOT NULL
verwenden, da ich TOT_RESTE_CLIENT korrekt gezählt werden muss.
wahrscheinlich ist Ihre einfachste Wette, nur hinzuzufügen, wo echue ist nicht null zu Ihrer Anfrage. Sind in der Spalte ECHUE andere Werte möglich als ECHUE und null? – Boneist
Nein, weder ECHUE noch NULL. Ich werde nicht verwenden, wo echue nicht null ist, weil ich dasselbe tun muss, um in der ECHUE-Spalte auf Null zu setzen. –