SQL Сгруппируйте, используя две разные даты из двух таблиц - PullRequest
0 голосов
/ 25 марта 2020

У меня есть две таблицы, с которыми я имею дело.

select daydate 
from Temp_Dates

results:

**daydate**
2019-01-01 
2019-01-02 
2019-01-03 
2019-01-04 
2019-01-05 
2019-01-06 
2019-01-07 
2019-01-08 
2019-01-09 
2019-01-10 



select Coverage_Effective_Date, Coverage_Expiration_Date, Certificate_Number 
from Elig_dates

results:

*Coverage_Effective_Date     Coverage_Expiration_Date    Certificate_Number*        
2018-12-31                    2019-01-31                   1LEL17-115487         
2019-01-01                    2019-01-31                   1LEL17-115488        
2019-01-01                    2019-01-31                   1LEL17-115494             
2019-01-02                    2019-01-31                   1LEL17-115497         
2019-01-03                    2019-01-31                   1LEL17-115500         
2019-01-05                    2019-01-31                   18LEL18-121770       
2019-01-05                    2019-01-31                   18LELL18-109689       
2019-01-09                    2019-01-31                   ATR16-160410          
2019-01-10                    2019-01-31                   ATR16-160410          
2019-01-10                    2019-01-31                   18LCL18-117965       

Я хочу видеть количество Certificate_Number каждый раз DayDate между Coverage_Effective_Date & Coverage_Expiration_Date Группировка DayDate

Пока вот мой код,

select DayDate, count(E.certificate_number) as Total
from  Elig_dates E

where dayDate in 
    ( 
select DayDate
from Temp_dates 
where DayDate between E.Coverage_Effective_Date and E.Coverage_Expiration_Date
    ) 

group by  DayDate

Что я ищу, это,

**daydate**    **Total**
2019-01-01        3
2019-01-02        4
2019-01-03        5
2019-01-04        5
2019-01-05        7
2019-01-06        7 
2019-01-07        7
2019-01-08        7
2019-01-09        8
2019-01-10        10

Спасибо куча за вашу помощь!

1 Ответ

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

Присоединитесь к таблицам в зависимости от вашего состояния, затем сгруппируйте по дате и суммируйте:

select t.daydate, count(*) Total
from Temp_Dates t left join Elig_dates e
on t.daydate between Coverage_Effective_Date and Coverage_Expiration_Date
group by t.daydate

См. Демонстрационную версию . Результаты:

> daydate                 | Total
> :---------------------- | ----:
> 2019-01-01 00:00:00.000 |     3
> 2019-01-02 00:00:00.000 |     4
> 2019-01-03 00:00:00.000 |     5
> 2019-01-04 00:00:00.000 |     5
> 2019-01-05 00:00:00.000 |     7
> 2019-01-06 00:00:00.000 |     7
> 2019-01-07 00:00:00.000 |     7
> 2019-01-08 00:00:00.000 |     7
> 2019-01-09 00:00:00.000 |     8
> 2019-01-10 00:00:00.000 |    10
...