有下面一条sql,我的需求是这样的:
比如有个时间字段和数量字段,我要求,这个月(或者按周,按小时)和上个月(或者上周,小时)的增量,比如说1月份30,2月份50,3月份40,7月份的80,那么2月份的增量就是30,3月份的增量是-10,问题来了,我的sql只能查挨到的月份,7月份旁边没有6月份,就查不到增量,怎么改呀,sql如下:
Select (Cast(T1.周 As Varchar(10))+'周较'+Cast(T2.周 As Varchar(10))+'周') as crecordtime , (T1.总数量 - T2.总数量) as ccount
From (Select datepart(ww,crecordtime) 周, Sum(ccount) 总数量 From tb
where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00'
Group By datepart(ww,crecordtime) ) T1, (Select datepart(ww,crecordtime) 周, Sum(ccount) 总数量
From tb where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00'
Group By datepart(ww,crecordtime) ) T2 Where T1.周 = T2.周+1
比如有个时间字段和数量字段,我要求,这个月(或者按周,按小时)和上个月(或者上周,小时)的增量,比如说1月份30,2月份50,3月份40,7月份的80,那么2月份的增量就是30,3月份的增量是-10,问题来了,我的sql只能查挨到的月份,7月份旁边没有6月份,就查不到增量,怎么改呀,sql如下:
Select (Cast(T1.周 As Varchar(10))+'周较'+Cast(T2.周 As Varchar(10))+'周') as crecordtime , (T1.总数量 - T2.总数量) as ccount
From (Select datepart(ww,crecordtime) 周, Sum(ccount) 总数量 From tb
where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00'
Group By datepart(ww,crecordtime) ) T1, (Select datepart(ww,crecordtime) 周, Sum(ccount) 总数量
From tb where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00'
Group By datepart(ww,crecordtime) ) T2 Where T1.周 = T2.周+1
解决方案 »
- 数据库字符串连接和数字统计问题,比较难一点。求大虾帮忙
- SQL2000数据写入及导出问题
- 困扰3天的bug,请高手进来看看
- 请教一个查询数组的sql语句问题?
- 求sql新数据类型:table 的用法
- ssh通道 和接口调用 服务器端数据库
- 求助!win7英文系统安装MSDE2000失败
- 我有个数据库文件。没有后缀,请问怎么恢复到ms sql2000。此文件应该是mssql文件
- 如何update使float型的字段为<null> 而不是0
- 有关统计某个用户(user1)人气的实现,是否可行。每天记录最少1000万条记录
- SQL 不能对包含聚合或子查询的表达式执行聚合函数
- 求救,各位大侠帮帮忙,这是我写在delphi服务端中的一条语句,现在想在客户端用数据集传参数的方法取代这边的case when 语句,怎么做?
T1.总数量-(select top 1 sum() from where order by ..desc)
这样就不要连续
只是减去最近一个日期的
From (Select datepart(ww,crecordtime) 周, Sum(ccount) 总数量 From tb
where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00'
Group By datepart(ww,crecordtime) ) T1, (Select top 1 datepart(ww,crecordtime) 周, Sum(ccount) 总数量
From tb where crecordtime >='2011-12-5 0:00:00' and crecordtime<='2012-7-31 0:00:00' and datepart(ww,crecordtime) < T1.周
Group By datepart(ww,crecordtime) order by datepart(ww,crecordtime) desc) T2 --Where T1.周 = T2.周+1