我想在 SSMS 中创建一个表或视图,它应该有一个名为qoh的列。在该列中应该计算列rel_qty的总和值。IE
- qoh的第一个数据与第一行的rel_qty的值 相同。
- qoh的第二个值应该是第一行和第二行的 rel_qty值之和。
- qoh的第三个值 应该是第一行、第二行和第三行的rel_qty值之和。
有没有可能做到这一点?
这是我的查询。但是这个查询只满足第一行和第二行而不是更多,
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
如果我的 id 跳过一个值,则此查询无法进行计算。我怎样才能解决这个问题?
这是我的结果的截图
看来你需要一个运行总计。
如果
tot_qty
所有行都相同,那么您可以使用ROWS UNBOUNDED PRECEDING
是 的缩写版本ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
。此窗口框架选项意味着对于每一行,
SUM
将包括其自身和所有前辈按id
.该
ROWS
选项可能对效率很重要,如运行总计的最佳方法中所述 - 针对 SQL Server 2012 更新