Выберите запрос с несколькими подзапросами для количества (Netezza SQL) - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь создать отчет, который получает счет за 3 периода времени: предыдущий месяц, этот месяц в прошлом году и год к дате.

Ранее я использовал 3 отдельных запроса, как показано ниже, при переключении предложений where, но я хочу объединить все 3 запроса в один.

Я пробовал с примерами дел, но, похоже, не смог заставить это работать. К вашему сведению app_date это YYYY-MM-DD

Select count(application_id)
from application_data a
where to_char(app_date, 'YYYYMM' = to_char(current_date, 'YYYYMM')-1
--where to_char(app_date, 'YYYYMM' = to_char(current_date, 'YYYYMM')-101
--where to_char(app_date, 'YYYY') = to_char(current_date, 'YYYY') and to_char(app_date, 'YYYYMM') <> to_char(current_date, 'YYYYMM')

Пример данных:

App_ID          App_date  
123519          2018-02-17  
123521          2018-02-18  
123522          2018-02-19  
123523          2018-02-23  
123518          2019-01-15  
123546          2019-02-21  
123547          2019-02-22  
123548          2019-02-15  
123542          2019-02-02  

Желаемый результат:

LastMonth      YTD       YoY  
4               5         4

1 Ответ

1 голос
/ 20 марта 2019

Я думаю, вы хотите условное агрегирование:

Select sum(case when to_char(app_date, 'YYYYMM' = to_char(current_date, 'YYYYMM')-1 then 1 else 0 end),
       sum(case to_char(app_date, 'YYYYMM' = to_char(current_date, 'YYYYMM')-101 when then 1 else 0 end),
       sum(case when to_char(app_date, 'YYYY') = to_char(current_date, 'YYYY') and to_char(app_date, 'YYYYMM') <> to_char(current_date, 'YYYYMM') then 1 else 0 end)
from application_data a
...