求一句sql语句···
我要查询从一个开始日期到结束日期的每一天的值····
例如 表结构:
name date num
小明 2013-03-01 2
小明 2013-03-03 3
小明 2013-03-05 5
那我如果要查询从3月1号到5号的结果···
要求返回
name 2013-03-01 2013-03-02 2013-03-03 2013-03-04 2013-03-05
小明 2 0 3 0 5
注意看···2013-03-02···在数据库里没有这个值··就赋值为0··
sql 数据库
------解决方案--------------------
declare @sql nvarchar(max),
@stime datetime,
@etime datetime
select @stime=min(date),@etime=max(date)from tb
select @sql=isnull(@sql,'')+',max(case when date='''+convert(varchar(10),dateadd(day,number,@stime),23)+''' then num else 0 end)['+convert(varchar(10),dateadd(day,number,@stime),23)+']' from master..spt_values where type='p' and
convert(varchar(10),dateadd(day,number,@stime),23)<=convert(varchar(10),@etime,23)
exec('select [name]'+@sql+' from tb group by [name]')
------解决方案--------------------
master..spt_values中有一列number你可以获取连续的数字,1,2,3,4,5.。。具体的就看你的需求了,你输入开始结束日期,中间的自动加1嘛,number的数字就在这两者之间