比如当月有有5条记录,我要显示这个月1号到30号的所有记录最后得到的结果是30条,不是10条(见下表)
序号 金额 添加时间 用出时间 状态(是否已用)
1 100 2012-6-1 null 0
2 300 2012-6-3 null 0
3 100 2012-6-5 2012-6-6 0
4 100 2012-6-5 null 0
5 100 2012-6-8 null 0我想得到这个表
时间 到今天为止未用金额
2012-6-1 100
2012-6-2 100
2012-6-3 400
2012-6-4 400
2012-6-5 600
2012-6-6 500
2012-6-7 500
2012-6-8 600
........我该怎么做..
序号 金额 添加时间 用出时间 状态(是否已用)
1 100 2012-6-1 null 0
2 300 2012-6-3 null 0
3 100 2012-6-5 2012-6-6 0
4 100 2012-6-5 null 0
5 100 2012-6-8 null 0我想得到这个表
时间 到今天为止未用金额
2012-6-1 100
2012-6-2 100
2012-6-3 400
2012-6-4 400
2012-6-5 600
2012-6-6 500
2012-6-7 500
2012-6-8 600
........我该怎么做..
解决方案 »
- 关于p2p数据库的projet问题
- 一个关于修改sql中编号的问题
- 存储过程中有这几个字什么意思?高手帮帮忙
- 高手帮忙看下我的文件保存老是出错。。
- 如何统计客户半年内没有参加活动!?急!
- 新手弱问:如何查询一段时间内 发生的业务
- 如何判断某字段里的值是否能转化为datetime类型
- 大家可以教教我SQL中的IMAGE字段是怎么用的么?我一直都不知道他到底是做什么的?
- 如何在查询分析器中调用先前已经保存在本地的DTS包
- INSERT: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connecti
- 全面监控SQLServer数据库和Windows服务器的软件
- sql中为用户添加服务器角色的问题,急
create table #ta(序号 int, 金额 int, 添加时间 datetime, 用出时间 datetime, 状态 bit)
insert into #ta select 1, 100, '2012-6-1', null, 0
union all select 2, 300, '2012-6-3', null, 0
union all select 3, 100, '2012-6-5', '2012-6-6', 1
union all select 4, 100, '2012-6-5', null, 0
union all select 5, 100, '2012-6-8', null, 0--创建函数
Create function dbo.fn_MonthList(@s as datetime) returns table
as
return
with CET1 AS
(SELECT dateadd(dd, number , convert(char(6),@s,112)+'01')AS T
FROM master..spt_values where type='p'
and number < day(dateadd(mm,1,@s)-day(@s))
)SELECT * FROM CET1
GO--演示解决方案
;with qq AS(select T, 金额 from dbo.fn_MonthList1('2012-06-09') a left join #ta b on b.添加时间 = a.T and 状态 <> 1)
SELECT CONVERT(CHAR(10),O1.T,120) 时间, SUM(O2.金额) AS 到今天为止未用金额
FROM qq AS O1
JOIN qq AS O2
ON O2.T <= O1.T
GROUP BY O1.T, O1.金额
ORDER BY O1.T;
/*时间 到今天为止未用金额
---------- -----------
2012-06-01 100
2012-06-02 100
2012-06-03 400
2012-06-04 400
2012-06-05 500
2012-06-06 500
2012-06-07 500
2012-06-08 600
2012-06-09 600
2012-06-10 600
2012-06-11 600
2012-06-12 600
2012-06-13 600
2012-06-14 600
2012-06-15 600
2012-06-16 600
2012-06-17 600
2012-06-18 600
2012-06-19 600
2012-06-20 600
2012-06-21 600
2012-06-22 600
2012-06-23 600
2012-06-24 600
2012-06-25 600
2012-06-26 600
2012-06-27 600
2012-06-28 600
2012-06-29 600
2012-06-30 600(30 行受影响)
*/