使用当前行值更新变量

时间:2013-01-27 07:18:38

标签: sql tsql variables subquery sql-server-2012

我正在尝试执行一个复杂的操作,其中我为整列数据提取总和,并从每行的总和中减去运行小计。我可以单独完成Sum和Running Subtotal的组件部分。用于运行小计:

sum(UsageMetric) over(order by Nested1.IDNumber) as RunningTotal

但是,在尝试将它们加入时我收到此错误:

  

子查询返回的值超过1。子查询遵循=,!=,<,< =,>,> =或使用子查询时不允许这样做   作为表达。

所以我操纵了它,它返回给定行的'独立'运行小计:

declare @TargetNumber BIGINT
Set @TargetNumber=(select Nested1.IDNumber from TargetTable Nested1 where Nested1.IdNumber='1234567890' and (Extraneous Criteria Here))

select  sum(Usage.UsageMetric) 
from Table_Usage Usage, IDTable IDT
where IDT.IDNumber <= @TargetNumber
and (Extraneous Criteria Here)

但我真正想做的是能够删除限定符“Nested1.IDNumber ='1234567890',并为TargetTable中的每个IDNumber执行此操作。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以执行以下操作:

sum(UsageMetric) over () -
sum(UsageMetric) over (order by Nested1.IDNumber) as ...

虽然简单地恢复OVER子句中的行顺序会产生相同的结果,但我相信:

sum(UsageMetric) over (order by Nested1.IDNumber DESC) as ...