【发布时间】:2012-12-23 21:42:52
【问题描述】:
我正在运行 SQL Server 2012,这就是我需要的:
Row Field1 Field2
1 0 1
2 ? 2
3 ? -5
我需要一个会逐行抛出的查询。 它应该取 row2,field1 并将其设置为等于 row1,field1+row2,field2
然后将 row3,field1 设置为等于 row2,field1+row3,field2
最初,该表在 Field1 中的值都等于 0,因此当我运行查询时,它总是将 0 用于 field1 值。
任何帮助将不胜感激。我在想 CTE 将是要走的路,但我只是不知道该去哪里。
编辑: 只是为了澄清一些事情,在我的例子中。初始输入是
Row Field1 Field2
1 0 1
2 0 2
3 0 -5
期望的输出是:
Row Field1 Field2
1 1 1
2 3 2
3 -2 -5
我的实际表格有点复杂,但我知道我可以专门应用它,如果我能理解如何通过这个示例完成它。
【问题讨论】:
-
显示的表格是您的输入吗?如果是,您也可以向我们展示您的预期结果吗?
-
那么,您基本上是在寻找像this 这样的运行总数,但有点奇怪?我建议不要以这种方式在整个表上使用递归 CTE,因为它会涉及与行数一样多的索引/表扫描。
-
如果您提供示例数据和所需的结果会更清楚。
-
我进行了编辑以显示一些示例输入/输出。这有点像运行总计,但它只添加上一行和当前行的内容。实际数据集相当大(MLB play by play data)
-
@AnthonyTyler - 但是,如果它只是从前一行添加东西,而前一行中添加的字段又从前一行更新,那么它完全不是一个运行总计它?我没有看到您想要的结果与我的回答中第一种方法的结果有任何区别。也许更新您的示例以显示差异?
标签: sql sql-server-2012