日期:2014-05-18  浏览次数:20339 次

求关于时间段的sql语句算法
有一个表结构为 
帐号 起算日期 变动日期 余额 
001 20070205 20070506 1000.00 
001 20070205 20070806 1200.00 
001 20070205 20071106 1400.00 
001 20070205 29999999 1400.00 

002 20070810 20070815 500.00 
002 20070810 20070820 600.00 
002 20070810 20070821 0.00

003 20070910 20070930 1000.00
003 20070910 29999999 1000.00

要求计算每个帐号在2007/8月的每天平均余额 
例如001的余额就是(1000*5+1200*26)/31 
002就是(8*10+5*600+11*0)/31
003就是0


关键就是相当于求每个时间段分别在某个已定义的固定时间段内的天数
例如有下面n个时间段
1,StartDate---date1
2,date1 ---date2
3,date2 ---date3
4,date3 ---date4
.....
n,date4 ---dateX
e,dateX ---EndDate

求上面每个时间段在某个固定时间段(例如t1---t2)的天数
昨天有位DX帮我写了一个,但是时间段方面还是有点漏洞,所以今天再求了:)
我自己写的晕头转向,求比较好的思路





------解决方案--------------------
例如001的余额就是(1000*5+1200*26)/31
002就是(8*10+5*600+11*0)/31 
003就是0 

你这是咋计算的?没看出.
------解决方案--------------------
http://topic.csdn.net/u/20071007/17/0c0cf6c8-1663-4c84-8b68-fc82bcac04e9.html

tteagle 发表于:2007-10-07 20:10:09
frrrrrrrrrrrrrrrrrrrrrrrrrr日日日日


昨天是我写的。我得罪你啦,需要用这个字?

我没叫你不测试就结贴,也没要求你给我分,对吧?

你昨天没提醒1个月内可能变动多次,对吧?
好,这个问题算我考虑不周,抱歉!

002是我写错了,应该是
(5*500+5*600+11*0)/31

这个仍然错,应该是(15*500+5*600+11*0)/31。
不管按哪个式子,计算规则和001都不同,懂么?

如果要计算200702的平均,还需要初始余额,懂么?

自己都理不清应该怎么计算,好意思“日”了?