Как разбить одну строку на 12 на основе месяца в SQL? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть 2 таблицы.Таблица A и таблица B. Мне нужно создать таблицу C. Таблица B - это таблица временных рядов с одной записью на каждый день.Я использую Azure SQL. Я хочу разделить строку на каждый отдельный месяц, как показано ниже:

Таблица A

StartDate     EndDate
2018-02-12   2019-02-12

Таблица B

Date        Day       Month      Year
2018-01-01  Monday    Jan          2018
2018-02-02  Tuesday    Feb         2018
:
:
2019-12-31  Tuesday    Dec         2019

Вывод

Table C
StartDate   EndDate      Month   
2018-02-12  2018-02-28   Feb
2018-03-01  2018-03-31   March
:
:
2019-02-01  2019-02-12   Feb

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете сделать это, сгруппировав TableB и используя TableA в качестве фильтра.

select
     min(date) as StartDate
    ,max(date) as EndDate
    ,Month
from TableB
where date >= (select StartDate from TableA)
and date <= (select EndDate from TableA)
group by Month,Year

Если в таблице B больше строк (дополнительный столбец id):

select
     min(date) as StartDate
    ,max(date) as EndDate
    ,Month
    ,a.id
from TableB b
join TableA a
    on b.Date between a.StartDate and a.EndDate
group by id,Month,Year
...