Mar*_*das 5 sql-server sql-server-2014 running-totals
我想在 SSMS 中创建一个表或视图,它应该有一个名为qoh的列。在该列中应该计算列rel_qty 的总和值。IE
有没有可能做到这一点?
这是我的查询。但是这个查询只满足第一行和第二行,仅此而已,
SELECT a.id, a.tot_qty, a.rel_qty,
(a.tot_qty -
COALESCE (a.rel_qty +
(SELECT b.rel_qty
FROM dbo.foo AS b
WHERE (b.id = a.id - 1)),
a.rel_qty)
) AS qoh
FROM dbo.foo AS a
ORDER BY a.id
Run Code Online (Sandbox Code Playgroud)
如果我的 id 跳过一个值,则此查询无法进行计算。我怎样才能解决这个问题?
这是我的结果截图
看来你需要一个运行总数。
如果tot_qty
在所有行中都相同,那么您可以使用
SELECT id,
tot_qty,
rel_qty,
tot_qty - SUM(rel_qty) OVER (ORDER BY id ROWS UNBOUNDED PRECEDING) AS qoh
FROM dbo.foo
ORDER BY id;
Run Code Online (Sandbox Code Playgroud)
ROWS UNBOUNDED PRECEDING
是 的缩写版本ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
。
这个窗口框架选项意味着对于每一行,SUM
将包括它自己和所有按顺序排列的前辈id
。
如运行总计的最佳方法 - 针对 SQL Server 2012 更新中ROWS
所述,该选项对于效率可能很重要
归档时间: |
|
查看次数: |
20011 次 |
最近记录: |