三、 SQLServer数据库中有一张表,表名:销售额,结构如下:
月份 int PK
该月销售额 money
I.要求返回一个列表,结构如下:
月份 int
该月销售额 money
累计销售额 money
累计销售额额 = 记录的第一条开始算起累加至该月的销售额。
例如: 有三条记录
200601 100
200602 100
200603 100
返回结果应为:
200601 100 100
200602 100 200
200603 100 300
II.查询当月销售额为第3位的月份
请写出实现脚本。可以不考虑效率问题,你能想出几种解法就写几种。
月份 int PK
该月销售额 money
I.要求返回一个列表,结构如下:
月份 int
该月销售额 money
累计销售额 money
累计销售额额 = 记录的第一条开始算起累加至该月的销售额。
例如: 有三条记录
200601 100
200602 100
200603 100
返回结果应为:
200601 100 100
200602 100 200
200603 100 300
II.查询当月销售额为第3位的月份
请写出实现脚本。可以不考虑效率问题,你能想出几种解法就写几种。
create table T([Month] int, [Money] money)
insert T select 200601, 100
union all select 200602, 100
union all select 200603, 100select A.*, [SUM]=(select sum([Money]) from T where [Month]<=A.[Month]) from T as A--result
Month Money SUM
----------- --------------------- ---------------------
200601 100.0000 100.0000
200602 100.0000 200.0000
200603 100.0000 300.0000(3 row(s) affected)
请问 [Month]<=A.[Month]是怎么回事?
看不懂!
insert T select 200601, 100
union all select 200602, 100
union all select 200603, 100
create table #a([Month] int,[Money] money,[sum] money)
declare
@Month int,
@Money money,
@sum money
set @sum=0
declare yb cursor fast_forward for select t.* from t
open yb
fetch yb into @Month,@Money
while @@fetch_status=0
begin
set @sum=@sum+@money
insert #a values (@Month,@Money,@sum)
fetch yb into @Month,@Money
end
close yb
deallocate yb
select * from #a
200601 100.0000 100.0000
200602 100.0000 200.0000
200603 100.0000 300.0000
请问 [Month]<=A.[Month]是怎么回事?
看不懂!
----------------------------------------------------
子查询用于合计,而[Month]<=A.[Month]是合计条件,即 在子查询中合计‘小于等于当前日期的所有金额’如果你当前日期是 200602 那么子查询中的合计的日期是 200601 200602