我创建了一个 SQL 查询,它按预期工作,但在 SELECT 语句中使用了大量重复代码来计算一个值。
例如在我的 SQL 语句中,这一行:
SUM(od.Number01) OVER (ORDER BY od.Number01)
对不同公式中的多个 SELECT 条件重复。
例如
(rd.OurQty - SUM(od.Number01) OVER (ORDER BY od.Number01) + od.Number01) AS 'Left In Stock'
和
CASE WHEN (rd.OurQty - SUM(od.Number01)
OVER (ORDER BY od.Number01) + od.Number01) - od.Number01 > 0 THEN od.Number01 ELSE (CASE WHEN (rd.OurQty - SUM(od.Number01) OVER (ORDER BY od.Number01)
+ od.Number01) > 0 THEN (rd.OurQty - SUM(od.Number01) OVER (ORDER BY od.Number01) + od.Number01) ELSE 0 END) END AS 'Allocated'
对于小型数据集,这不是什么大问题。然而,当数据集变得更大时,就会出现问题。
如何在每行计算中存储一次该语句的结果,然后在所需的计算中使用存储在整个 SELECT 语句中的局部变量中的结果,而不是多次执行相同的计算?
我正在使用 Microsoft SQL Server Management Studio 2012