Cor*_*rei 5 sql t-sql sql-server sql-server-2008
我有下表:
CREATE TABLE tbl_proc(
[proc] float,
subscriber bigint
)
Run Code Online (Sandbox Code Playgroud)
数据:
proc | subscriber
-----|-----------
0.7 | 123456
0.5 | 1234567
0.3 | 12345
0.3 | 45678
0.3 | 1234
0.2 | 123455
0.1 | 894562
Run Code Online (Sandbox Code Playgroud)
我想找到一个很好的方法来向表中添加一个新列,表示上述值的总和.
结果:
proc | subscriber | col3
-----|------------|------------
0.7 | 123456 | 0.7
0.5 | 1234567 | 1.2 -- 0.7 + proc
0.3 | 12345 | 1.5
...
Run Code Online (Sandbox Code Playgroud)
我找到了以下方法:
Select a.[proc],SUM(b.[proc])
from tbl_proc a, tbl_proc b
where a.[proc] <= b.[proc] and (a.[proc] <> b.[proc] or a.subscriber >= b.subscriber)
group by a.[proc],a.subscriber
order by a.[proc] desc
Run Code Online (Sandbox Code Playgroud)
在我的表中,数据按proc排序.订阅者列也是唯一的.
我发现这种方法有点贵(我的桌子很大).由于性能原因,我没有考虑过光标 - 就像解决方案一样.
有什么建议?
更新:
我再搜索了一下这个问题,并在此页面上找到了"更新到本地变量"解决方案:
据我测试,这证明是迄今为止最好的解决方案.
声明@runningTotal float = 0
UPDATE tbl_proc SET @RunningTotal = new_col = @RunningTotal + [proc] FROM tbl_proc
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |