У меня есть следующий сценарий:Как игнорировать нули в выражениях case с использованием аналитических функций?
Это мой SQL:
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
Что я имею в таблице:
Name | ECHUE |RESTE
-----------|-----------|---------
John | ECHUE | 20
John | ECHUE | 20
John | null | 20
John | ECHUE | 20
Что я получаю:
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
Что я хочу:
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
Я использую версию базы данных ORACLE 12. Я не могу использовать Where ECHUE IS NOT NULL
, так как мне нужен TOT_RESTE_CLIENT для подсчета соответствия.
вероятно, ваша самая легкая ставка - просто добавить 'where echue is not null' по вашему запросу. Возможны ли другие значения в столбце ECHUE, кроме ECHUE и null? – Boneist
Нет, нет ECHUE или NULL. я не буду использовать, где echue не является нулевым, потому что мне нужно сделать то же самое, что и null в столбце ECHUE. –