有一销售成绩表,字段包括(业务号,销售时间,销售金额)
sales_result(business_no,sales_date,sales_Amount)
001,20080101,50000
002,20080102,40000
003,20080201,70000
004,20080301,60000
问: 销售金额从20080101开始(含)计算,当金额到达150000时的时间是多少?
结果:20080201。
听起来很实用,可sql还真没写过类似的。平常都是根据时间统计金额的。
请问这个sql该怎么写?

最新回复
nemo410 (2008-10-22 15:14:13)
n_9698 (2008-10-22 16:54:28)
gavinhuang (2008-10-22 17:14:59)
Table created
SQL> Insert Into sales_result values('001','20080101',50000);
1 row inserted
SQL> Insert Into sales_result values('002','20080102',40000);
1 row inserted
SQL> Insert Into sales_result values('003','20080201',70000);
1 row inserted
SQL> Insert Into sales_result values('004','20080301',60000);
1 row inserted
SQL> Select * From sales_result;
BUSINESS_NO SALES_DATE SALES_AMOUNT
----------- ---------- --------------------
001 20080101 50000.0000
002 20080102 40000.0000
003 20080201 70000.0000
004 20080301 60000.0000
SQL> Select Min(Sales_date)
2 From (Select sales_date, Culmulative_Sum
3 From (Select Business_no,
4 sales_date,
5 Sales_amount,
6 Sum(Sales_amount) over(order by sales_date) as Culmulative_sum
7 From sales_result
8 Where Sales_date >= '20080101') T
9 Where Culmulative_sum > 150000) S;
MIN(SALES_DATE)
---------------
20080201
SQL> Drop table Sales_result;
Table dropped
[ 本帖最后由 gavinhuang 于 2008-10-22 17:19 编辑 ]
regonly1 (2008-10-22 20:32:37)
select min(aa.sales_date) from (
select sr.*, sum(sr.sales_amount) over(order by sr.sales_date) sm
from sales_result sr) aa
where aa.sm >= 150000
n_9698 (2008-10-23 16:12:41)
下来好好研究一下分析函数的实用。