【发布时间】:2013-01-22 20:35:42
【问题描述】:
我正在尝试获取一个正在运行的小计(了解这与组的小计以及汇总方法不同)。
尝试使用
Row_Number() over (order by ID_Number) as Row_Count
并将其嵌套在 select 语句中,并在其自身上使用 LEFT OUTER JOIN(这只是搅动)。
我想要得到的是:
if ROW_COUNT > 1 THEN RUNNINGTOTAL = Volume_Category + (RUNNINGTOTAL for ID_Number where ROW_COUNT= ROW_COUNT(for this ID_Number*)-1)
我有一个表格,其中列出了唯一的“ID 号”,这是这里的重点。
【问题讨论】:
-
能否提供简单的数据和结果?
-
你用的是什么版本的sql server?
-
关于这个有几个问题,通常标记为累积和。我喜欢带有临时变量的答案,例如:stackoverflow.com/a/7631964/931379。它们通常比巧妙地使用
sum函数快得多。 -
@Pursuit 不保证以任何特定顺序处理古怪的更新(例如
UPDATE SET @var = Total = @var + value),即使您观察到了这种顺序。请参阅sqlperformance.com/2012/07/t-sql-queries/running-totals 了解更多详情。 -
@pursuit 我在问自己之前搜索了答案。需要使用“累积”而不是“运行小计”
标签: sql sql-server