Как ВЫБРАТЬ что-то с другим утверждением WHERE от других - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь сделать следующее:

Я создаю сводную таблицу в SQL, где создаю несколько столбцов с учетными записями пользователей, суммируемой суммой за дату и т. Д. c. Все эти столбцы будут иметь одинаковые условия WHERE.

Однако я хочу создать еще один столбец с суммой за последние 30 дней, который будет иметь условие WHERE date >= CURRENT_TIMESTAMP -30.

Как создать выделение в той же таблице с собственным условием?

Например:

У меня есть это:

This

Я хочу создать такую ​​сводную таблицу

That

Я уже сделал все, кроме последнего столбца - для этого нужно сложить сумму с условием WHERE date >= CURRENT_TIMESTAMP -30.

У других моих столбцов будет условие WHERE date >= '20200201'

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

Как сделать выбор, если столбец «Всего за последние 30 дней» имеет свои собственные условия, отличные от других столбцов?

1 Ответ

0 голосов
/ 27 февраля 2020

Функции даты различаются в зависимости от базы данных, но вот идея:

select user,
       sum(case when extract(day from date) = 1 then amount end) as day_1,
       sum(case when extract(day from date) = 2 then amount end) as day_2,
       sum(case when extract(day from date) = 3 then amount end) as day_3,
       sum(case when extract(year from date) = extract(year from current_date) and
                     extract(month from date) = extract(month from current_date)
                then amount
           end) as month_total,
       sum(case when date >= current_date - interval '30 da' then amount end) as last_30_days
from t
group by user;

Точные функции зависят от базы данных, которую вы используете.

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