Как сделать фильтр для поля, созданного с помощью MAX (CASE WHEN ... END)? - PullRequest
0 голосов
/ 21 мая 2019

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

SELECT
    MAX(CASE WHEN row_num = 1 THEN month END) AS month,
    customer_id,
    1 AS row_num,
    DATE_DIFF(MAX(CASE WHEN row_num = 2 THEN verified_date END),
              MAX(CASE WHEN row_num = 1 THEN verified_date END), DAY) AS difference
FROM yourTable
GROUP BY
    customer_id;

Теперь я хотел бы отфильтровать месяц, чтобы получить всепользователь делает ПЕРВАЯ транзакция в январе-апреле и делает ВТОРАЯ транзакция в любое время (январь-май) и пытается выполнить этот запрос:

SELECT
    MAX(CASE WHEN row_num = 1 AND month IN (1,2,3,4) THEN month END) AS month,
    customer_id,
    1 AS row_num,
    DATE_DIFF(MAX(CASE WHEN row_num = 2 THEN verified_date END),
              MAX(CASE WHEN row_num = 1 THEN verified_date END), DAY) AS difference
FROM yourTable
GROUP BY
    customer_id;

Запрос успешно выполняетсяоднако он сгенерировал месяц 1 2 3 4 и NULL в поле месяца.

Почему в нем значение NULL?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...