sqlite3 отдельный столбец для каждого дня, возвращающегося x дней - PullRequest
0 голосов
/ 26 марта 2020

Настройка

База данных sqlite3

Цель

Возможность просматривать доставку клиентов за последние x дней (не жестко запрограммировано, как намерение обновлять ежедневно) с разбивкой по «клиент» и отдельный столбец для каждого дня, поэтому я могу просматривать тренды и преобразовывать их в графики, если это необходимо.

Может кто-нибудь подтвердить, есть ли более простой способ получить желаемый результат без использования команды JOIN или JOIN рекомендуемый подход?

Выпуск

Я понимаю, как получить фильтр создания даты с помощью select "blah" from "table" where date = "a date", но я не совсем понимаю, как можно получить даты установить в разные столбцы для просмотра трендов.

Я мог бы сделать это с JOIN, но я чувствую, что должен быть более простой способ, чем делать это, учитывая, что все данные находятся в одной таблице. Я пытался найти решения в Google / искал в недрах YouTube учебник, но, должно быть, искал не те слова.

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

Client|Delivery|Date
client1|112966214|2020-03-27
client1|83060443|2020-03-26
client1|78606234|2020-03-25
client1|60987586|2019-03-24

Текущий запрос

select Client, sum(select Delivery from table_data where Date = DATE('now')) from table_data group by Client; 

Желаемые выходные столбцы

    Client|Delivery where Date = Today's Date |Delivery where Date = Date -1 day|Delivery where Date = Date -2 days | Delivery where Date = Date -3 days
client1|112966214|83060443|78606234|60987586

1 Ответ

0 голосов
/ 26 марта 2020

С условной агрегацией:

select Client,
  sum(case when Date = date('now') then Delivery end) [Today's Date],
  sum(case when Date = date('now', '-1 day') then Delivery end) [Delivery where Date = Date -1 day],
  sum(case when Date = date('now', '-2 day') then Delivery end) [Delivery where Date = Date -2 day],
  sum(case when Date = date('now', '-3 day') then Delivery end) [Delivery where Date = Date -3 day]
from table_data
group by Client
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...