时间段:2009-10-01 至 2009-10-15
报表内容:
日期 处理数量
2009-10-01 10
2009-10-02 15
2009-10-03 0
2009-10-04 3
。
。
2009-10-15 20
目前碰到一个问题就是如果2009-10-03号刚好数据没有,这一天数据就不会显示。在ORACLE下我会先把所有的时间先拿出来,然后再来给表进行关联,但是SQL SERVER 2005我不知道怎么写?请大侠赐招!!!!
附ORACLE下的做法:
显示一个月的所有天Sql代码
select to_date('200809','yyyymm')+(rownum-1) s_date from dual
connect by rownum<=last_day(to_date('200809','yyyymm')) - to_date('200809','yyyymm')+1
结果
2008-09-01
2008-09-02
。。。
2008-09-30
7 个解决方案
#3
恩,自己变通一下
#4
上面的两个帖子讲得很明白了 不写了
#5
SELECT CONVERT(VARCHAR(10),DATEADD(DD,NUMBER,'2009-10-01'),120)AS TIME
FROM MASTER..SPT_VALUES WHERE TYPE='P' AND DATEADD(DD,NUMBER,'2009-10-01')<='2009-10-15'
TIME
----------
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05
2009-10-06
2009-10-07
2009-10-08
2009-10-09
2009-10-10
2009-10-11
2009-10-12
2009-10-13
2009-10-14
2009-10-15
(所影响的行数为 15 行)
再连接连接查询吧,ORCAL的?
#6
isnull(s_date,0)
#7
想不到回复这么快~~谢谢楼上的各位!!!
#1
#2
#3
恩,自己变通一下
#4
上面的两个帖子讲得很明白了 不写了
#5
SELECT CONVERT(VARCHAR(10),DATEADD(DD,NUMBER,'2009-10-01'),120)AS TIME
FROM MASTER..SPT_VALUES WHERE TYPE='P' AND DATEADD(DD,NUMBER,'2009-10-01')<='2009-10-15'
TIME
----------
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05
2009-10-06
2009-10-07
2009-10-08
2009-10-09
2009-10-10
2009-10-11
2009-10-12
2009-10-13
2009-10-14
2009-10-15
(所影响的行数为 15 行)
再连接连接查询吧,ORCAL的?
#6
isnull(s_date,0)
#7
想不到回复这么快~~谢谢楼上的各位!!!