【问题标题】:SQL Group by using two different dates from two tables通过使用两个表中的两个不同日期进行 SQL 组
【发布时间】:2020-03-25 19:36:13
【问题描述】:

我要处理两张桌子。

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       

我希望每次 DayDate 介于 Coverage_Effective_DateCoverage_Expiration_Date 之间时查看 Certificate_Number 的计数strong>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

非常感谢您的帮助!

【问题讨论】:

    标签: sql group-by count subquery


    【解决方案1】:

    根据您的情况加入表格,然后按日期分组并汇总:

    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
    

    请参阅demo
    结果:

    > 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
    

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2022-01-23
      • 2021-03-29
      相关资源
      最近更新 更多