Объединение оператора IF с текущим запросом - PullRequest
0 голосов
/ 03 августа 2020

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

SELECT s.id as 'Subscription ID', s.customer_id as 'Customer ID', s.start_date as 'Start Date', s.status as 'Current Status', l.date 'Cancellation Date'
FROM subscriptions as s

LEFT JOIN subscriptionlog as l ON s.id=l.subscription_id

WHERE s.start_date >= 1559347200 
AND s.start_date <= 1596239999

Я добавил последний столбец «Дата отмены», где я хочу найти следующее:

l.event = 'subscription_cancelled'

Если он существует для подписчика, может ли он вывести l.date, но если он не может его найти, можно ли оставить столбец для этой строки пустым? Как я могу включить оператор IF?

1 Ответ

1 голос
/ 03 августа 2020

Это похоже на задание CASE. Вы можете поместить его в свой выбор для проблем с отображением if-else. Вы также можете поместить его в предложение WHERE для более надежного фильтра.

В вашем случае:

SELECT 
    s.id as 'Subscription ID', 
    s.customer_id as 'Customer ID', 
    s.start_date as 'Start Date', 
    s.status as 'Current Status', 

    CASE
        WHEN l.event = 'subscription_cancelled'
        THEN l.date
        ELSE NULL
    END as 'Cancellation Date'

FROM subscriptions as s

LEFT JOIN subscriptionlog as l ON s.id=l.subscription_id

WHERE s.start_date >= 1559347200 
AND s.start_date <= 1596239999
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...