日期:2014-05-19  浏览次数:20515 次

各位,进来看看这个SQL语句您能不能写出来?
数据表Table1,字段A(数值类型),在这个表的基础上生成一个新表,
这个新表包含Table1中的字段A信息,还要在这个新表中创建一个新字段(字段B),
新字段的值为Table1中字段A的Top   N-1   条字段A值的合计。

Table1
字段A
1
2
3
4
..


创建的新表如下:
Table2
字段A     字段B
1                 1
2                 3
3                 6
4                 10
..               ..



------解决方案--------------------
SELECT 字段A,
(SELECT SUM(字段A) AS bbb
FROM Table1
WHERE (字段A <= a.字段A)) AS 字段B
FROM Table1 AS a
------解决方案--------------------

select id,newCol=(select sum(id) from tb b where b.id <=a.id )
from tb a
------解决方案--------------------
其实这主要是看你按什么汇总了。

create table #
(
id int,
value int
)

insert into #
select 1, 100 union all
select 2, 200 union all
select 3, 300 union all
select 4, 400 union all
select 5, 500

select * from #

select b.Id, a.Id, a.value as sums
from # a, # b
where a.Id <= b.Id
order by b.Id

select b.Id, sum(a.value) as sums
from # a, # b
where a.Id <= b.Id
group by b.Id
order by b.Id

drop table #

执行结果如下:

id value
----------- -----------
1 100
2 200
3 300
4 400
5 500


Id Id sums
----------- ----------- -----------
1 1 100
2 1 100
2 2 200
3 1 100
3 2 200
3 3 300
4 1 100
4 2 200
4 3 300
4 4 400
5 1 100
5 2 200
5 3 300
5 4 400
5 5 500


Id sums
----------- -----------
1 100
2 300
3 600
4 1000
5 1500