DECLARE @date date;
set @date='2013-01-08'
;WITH t1 ( ADate , CDate ) AS (
SELECT '2013-01-01','2013-01-01' union all
SELECT '2013-01-01','2013-01-05' union all
SELECT '2013-01-02','2013-01-03' union all
SELECT '2013-01-02','2013-01-08' union all
SELECT '2013-01-03','2013-01-05' union all
SELECT '2013-01-03','2013-01-04' union all
SELECT '2013-01-05','2013-01-05' union all
SELECT '2013-01-05','2013-01-06' union all
SELECT '2013-01-05', NULL union all
SELECT '2013-01-05','2013-01-05' union all
SELECT '2013-01-06','2013-01-06' union all
SELECT '2013-01-06','2013-01-08' union all
SELECT '2013-01-07', NULL union all
SELECT '2013-01-07', NULL union all
SELECT '2013-01-07','2013-01-07'
)
Select COUNT(*) from t1 where (CDate > @date and ADate <= @date) or (CDate is null and ADate <= @date)
-- ADate 申请日期,CDate 审核日期,null表示还未审核, 算出每天总未审核的数量,算法为当前未审核的数量加上以前未审核的数量之和。
--假如截止日期为2013-01-08 结果为:
/*
申请日期 未审核总数
2013-01-01 1
2013-01-02 3
2013-01-03 4
2013-01-04 3
2013-01-05 3
2013-01-06 3
2013-01-07 5
2013-01-08 3
*/
我现在是通过存储过程循环得出结果的,方法如上,可不可以直接用一个sql语句来完成?
------解决方案--------------------
我觉得你可以搞个时间表,直接关联,这样最快
------解决方案--------------------
建议楼主换个思路做,将@t1 table (col date,n int)改为一个实际的固定表
然后按日期分组汇总后插入数据再统计
------解决方案--------------------
SQL语句的做法你不喜欢,为何不换个思路 拿程序做?