MSSQL 构建日期范围内的连续月份或日期(不借助系统表的方法)
来源:互联网 发布:网页设计排版软件 编辑:程序博客网 时间:2024/06/17 13:55
-- 注; 该方法在MSSQL2005或者以上版本适用
--A 为需要统计的原始数据
--B 构建连续日期使用, 一月最多 31 天, 所以最多需要到30.
--C 找出最小和最大日期
;with A(日期,金额) as
(select '2014-05-01','100' union all
select '2014-05-02','200' union all
select '2014-05-05','300' union all
select '2014-05-06','200'
),
B(id) as
(
select 0 union all
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select 8 union all
select 9 union all
select 10 union all
select 11 union all
select 12 union all
select 13 union all
select 14 union all
select 15 union all
select 16 union all
select 17 union all
select 18 union all
select 19 union all
select 20 union all
select 21 union all
select 22 union all
select 23 union all
select 24 union all
select 25 union all
select 26 union all
select 27 union all
select 28 union all
select 29 union all
select 30
),
C(mindt, maxdt) as
(
select Min(日期) as mindt, Max(日期) as maxdt from A
)
select T.日期, ISNULL(A.金额, 0) as 金额 from
(
select convert(varchar(10),dateadd(day, id, (select mindt from C)),120) as 日期
from B
) as T
left join A
on A.日期=T.日期
where T.日期 <= (select maxdt from C)
执行结果:
日期 金额
2014-05-01 100
2014-05-02 200
2014-05-03 0
2014-05-04 0
2014-05-05 300
2014-05-06 200
0 0
- MSSQL 构建日期范围内的连续月份或日期(不借助系统表的方法)
- MYSQL 不依赖其他表构建日期范围内的连续月份或日期
- MSSQL生成连续日期的方法
- 获取一段时间范围内的日期,月份 列表
- 快逸报表中连续日期或月份问题的解决
- [MSSQL]如何获取日期月份的英文缩写
- 输出指定日期范围内的日期列表
- 或取月份日期
- SQLSERVER获取两位的日期或月份
- SQLSERVER获取两位的日期或月份
- 查询给定日期的月份
- 两个日期的间隔月份
- 在SQL SERVER 中获取指定连续月份的旬的日期范围
- 在某个时间范围内选出所有符合条件的日期(星期几,月份中的几号)
- PB源码:查询日期范围内的数据
- 生成区间范围内的随机日期
- oracle选择日期范围内每天的统计
- SQL中提前日期或延后日期的查询方法
- CLM研究
- [POJ 3276] Face The Right Way (翻转问题+技巧)
- Error:Configuration with name 'default' not found. 解决办法
- java并发的线程安全单例模式
- spoj HS12MBR - Minimum Bounding Rectangle
- MSSQL 构建日期范围内的连续月份或日期(不借助系统表的方法)
- IntelliJ IDEA 使用心得与常用快捷键
- Flume的可靠性保证:故障转移、负载均衡
- linux 防火墙设置(摘自网络)
- qt入门
- hdu1166
- 链表中倒数第k个结点
- S3C2451_lcd屏显示操作详解代码_ARM
- Unicode UTF的不同