【发布时间】:2016-04-27 02:47:28
【问题描述】:
我有下面的行,我想访问前一行并将其值除以当前行。对于每一行,我需要计算 Vi 值,这个 Vi 值等于 Vi-1/Vi,这意味着:
给定表格
Table T
id value out
1 100
2 200
3 10
4 50
我想生成这些值
V1 = 100
V2= 100/200 = 0.5
V3 = 0.5/10 = 0.05
V4 = 0.05/50 = 0.001
所以最后我想要以下输出:
id value out
1 100 100
2 200 0.5
3 10 0.05
4 50 0.001
我尝试将聚合函数 SUM 与 OVER() 一起使用,但我不知道如何解决这个问题,因为我需要除而不是求和
SELECT id, value, SUM(value) OVER(ORDER BY id ROWS BETWEEN
1 PRECEDING AND 1 PRECEDING ) / value as out
FROM T
样本数据:
CREATE TABLE t(
id INT,
value INT
);
INSERT INTO t VALUES
(1, 100), (2, 200), (3, 10), (4, 50);
【问题讨论】:
-
不能使用 T-SQL 是什么意思?
-
我的意思是我不能使用 CREATE 过程,CREATE 函数...
-
有趣的问题!
-
添加了示例数据的创建。
标签: sql-server divide cumulative-sum