【发布时间】:2017-04-12 15:02:51
【问题描述】:
我想实现以下目标:
SELECT DISTINCT
id AS Col0,
'constant' AS Col1
IIF(z < 0, x, 0) AS Col2,
IIF(z > 0, x, 0) AS Col3,
SUM(x) OVER(ORDER BY Col2 DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Col4]
FROM y
ORDER BY Col2 DESC
OFFSET 0 ROWS
FETCH NEXT 500 ROWS ONLY
我正在尝试创建一个累积列。问题是我想在OVER() 上动态使用表的ORDERBY(),但OVER(ORDERBY()) 不支持基于索引,也不接受Col1 作为列。
我该怎么做呢?之后我可以在代码中轻松地做一些事情,但我更愿意学习如何在纯 SQL 中做到这一点。
【问题讨论】:
-
你能显示样本输入和你想要的输出吗?注意出现在
OVER子句中的ORDER BY与窗口函数SUM()有关,不是结果集的顺序。
标签: sql sql-server sum window-functions