求一列累加SQL语句,在线等。。。

时间:2021-06-13 19:22:45
数据:
Name        Region          sku
A医院         N                    10%
B医院         N                     5%
C医院        N                     15%

结果:

Name     Region             SKU       累加列
A医院         N                    10%          10%
B医院         N                     5%             15%
C医院        N                     15%            30%
意思就是需要查询结果多加一列,列的值是每行的SKU数值累加起来的。

4 个解决方案

#1


selete * from  table;
不用谢

#2



with tb as
(
select *,row_number()over(order by getdate())rn from table1  --table1你的表
)
select a.*,b.累加列from tb a cross apply (select Name,SUM(SKU)as [累加列] from tb where rn<=a.rn group by Name) b where a.Name=b.Name

#3


select   * ,(select sum(SKU)  from tableName where id<= a.id) as 累加列  from tableName a
当然,那个sum()时面的东西你自己处理一下了,因为你的有个%号,另外tableName的排列顺序也最好处理一下了,我就不写了,那个太简了

#4


--需要按不同地区分组累加么?需要的话用上partition ,不需要的话不用
with tt as (
select *,ROW_NUMBER()over(partition by Region order by Name) rn
from t 
)
select *,(select SUM(sku) from tt t2 where t2.Region=tt.Region and t2.rn<=tt.rn ) 累加列--sku如果是字符串,需要转型
from tt

#1


selete * from  table;
不用谢

#2



with tb as
(
select *,row_number()over(order by getdate())rn from table1  --table1你的表
)
select a.*,b.累加列from tb a cross apply (select Name,SUM(SKU)as [累加列] from tb where rn<=a.rn group by Name) b where a.Name=b.Name

#3


select   * ,(select sum(SKU)  from tableName where id<= a.id) as 累加列  from tableName a
当然,那个sum()时面的东西你自己处理一下了,因为你的有个%号,另外tableName的排列顺序也最好处理一下了,我就不写了,那个太简了

#4


--需要按不同地区分组累加么?需要的话用上partition ,不需要的话不用
with tt as (
select *,ROW_NUMBER()over(partition by Region order by Name) rn
from t 
)
select *,(select SUM(sku) from tt t2 where t2.Region=tt.Region and t2.rn<=tt.rn ) 累加列--sku如果是字符串,需要转型
from tt