Разделение таблицы на основе интервалов на ежедневные данные - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь создать ежедневное представление данных из таблицы на основе интервалов, которая выглядит следующим образом:

startDate  |  endDate  | Product | Qty | Price |
2018-11-01   2018-11-30     A       12     10

Вот как я хочу, чтобы результат в представлении был:

  Date     | Product  | Qty  | Price |
2018-11-01      A       12      10
2018-11-02      A       12      10
....
2018-11-30      A       12      10
2018-11-31      A        0       0  

Как видно из вышесказанного, я хочу разбить интервалы на ежедневные наблюдения, и если продукт A не приобретен на определенную дату, то количество и цена должны быть равны 0.

Я создал таблицу Календаря, чтобы помочья пришел с вопросом, но пока не повезло.

Я просматривал эти сообщения, но не смог справиться с этой проблемой:

Разбить на несколько строк в зависимости от диапазона дат в одной строке

https://dba.stackexchange.com/questions/168915/split-date-range-into-separate-records

создание дней из диапазона дат

1 Ответ

0 голосов
/ 22 ноября 2018

У вас есть календарь, круто.Просто используйте его слева от ЛЕВОГО СОЕДИНЕНИЯ:

SELECT Calendar.Date, YourData.*
FROM Calendar
LEFT JOIN YourData ON Calendar.Date BETWEEN startDate AND endDate
WHERE Calendar.Date BETWEEN '2018-11-01' AND '2018-11-30'

Если вы хотите все пары дата-продукт, то добавьте CROSS JOIN:

SELECT Calendar.Date, Products.Product, YourData.*
FROM Calendar
CROSS JOIN (
    SELECT Product
    FROM YourData
    GROUP BY Product
) AS Products
LEFT JOIN YourData ON
    Calendar.Date BETWEEN startDate AND endDate AND
    Products.Product = YourData.Product
WHERE Calendar.Date BETWEEN '2018-11-01' AND '2018-11-30'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...