我有一个表,其中包含当天的(日期和订阅者),有些日子会有我的服务的新订阅者。然后我写了一个查询,查询每天的新订户数(计数)。但是有些天,没有新的订阅者,这些天根本不显示(没有新的订阅者=没有记录)。我希望他们显示,我希望没有新订阅者的记录显示有0个新订阅者。
例如订户表:
Date Subscribers
03-08-2018 a,b
04-08-2018 a,b,c
05-08-2018 a,c,d
06-08-2018 a,
07-08-2018 a,e,g,k,l
我得到的桌子:
Date New_Subs
03-08-2018 2
04-08-2018 1
05-08-2018 1
07-08-2018 4
我应该得到:
Date New_Subs
03-08-2018 2
04-08-2018 1
05-08-2018 1
06-08-2018 0
07-08-2018 4
PS我使用min(date)函数获取新的子项,以获取它在数据库中显示的第一个日期
SELECT count(*) Subscribers , convert(varchar, creatingdate, 23)
FROM Payments p
JOIN
(SELECT msisdn , Min(creatingdate) AS day
FROM Payments p
GROUP BY MSISDN) groupedtt
ON p.MSISDN = groupedtt.MSISDN
AND p.CreatingDate = groupedtt.day
group by convert(varchar, creatingdate, 23)
order by convert(varchar, creatingdate, 23)
答案 0 :(得分:0)
您可以使用master..spt_values
。用Type = 'P'
查询可以得到0到2047之间的数字。使用DATEADD(DAY, -1 * master..sp_values.number, GETDATE())
可以得到最近2048个日期。您可以从此表开始选择,并使用与订户的左联接表获取所有订户。在那之后,COUNT在没有空的日子里也将返回0。