SQL Server 使用SQL代码补充下面查询结果最大日期和最小日期之间的遗漏的日期?

0

999.JPG

如图所示,SQL查询出来的结果包含3列:月份、日期和值,如2015年1月份最小日期为1,最大日期为18,中间少了第11日;201502月最小日期为1最大日期为24,中间少了第9日,有办法把漏掉的这两天给加上吗?值可以默认为0。
已邀请:
0

郑大鹏 2016-08-12 回答

参考下  @悟 的这篇博客
MSSQL 基础之补全日期 - 商业智能精英问答社区,让交流更具价值 | 天善问答  
https://ask.hellobi.com/blog/lovezsr/512
 
WITH tmp AS
(
SELECT DATEADD(d,number,'2012-12-03') d,number % 7 number
FROM master..spt_values
WHERE type='P' AND DATEADD(d,number,'2012-12-03') <= '2012-12-17'
)
,tmp1 AS
(
SELECT '2012-12-03' A,1058.142856556400 S
UNION ALL
SELECT '2012-12-12',1054.571551871100
UNION ALL
SELECT '2012-12-17',1058.285714285200
)
SELECT d,number,CASE WHEN tmp1.S IS null THEN t.S / DATEDIFF(d,t.A,m.A) ELSE tmp1.S END,t.A,m.A
FROM tmp
LEFT JOIN tmp1 ON tmp.d = tmp1.A
OUTER APPLY (SELECT TOP 1 * FROM tmp1 WHERE tmp.d > A ORDER BY A DESC) t
OUTER APPLY (SELECT TOP 1 * FROM tmp1 WHERE tmp.d <= A ORDER BY A) m
0

seng - 从事BI、大数据、数据分析工作 2016-08-12 回答

用一张记录每天的日期维表不可以吗?
 

要回复问题请先登录注册