我需要在over子句中使用where子句。怎么样?
SELECT SUM(amount) OVER(WHERE dateval > 12)
或类似的东西。
- 编辑 -
更多详情
我的表格格式化为年,月和金额列。
我想选择所有年,月和金额行并创建第四个“虚拟列”,其中过去12个月的金额列的总和。
例如:
年份|月|金额
2001 | 03 | 10个
2001 | 05 | 25个
2001 | 07 | 10
应该创建:
年份|月| AMOUNT |滚动12个月
2001 | 03 | 10 | 10个
2001 | 05 | 25 | 35个
2001 | 07 | 10 | 45
答案 0 :(得分:5)
根据您对三列结果集的查询,以下内容是否适用于您?
SELECT
SUM(amount) OVER(ORDER BY YEAR ASC, MONTH ASC
ROWS BETWEEN 11 PRECEDING AND CURRENT ROW)
...
答案 1 :(得分:0)
select a,(select sum(a) from foo fa where fa.a > fb.a) from foo fb;
不使用,效率非常低,因为它为每个查询运行新的子查询,但它可以工作。