【发布时间】:2011-12-15 19:24:32
【问题描述】:
考虑这些数据
Day | OrderCount
1 3
2 2
3 11
4 3
5 6
如何使用 T-SQL 查询获得 OrderCount(running value) 结果集的累积
Day | OrderCount | OrderCountRunningValue
1 3 3
2 2 5
3 11 16
4 3 19
5 6 25
我可以通过在实际查询中循环(使用#table)或在我的 C# 代码隐藏中轻松地做到这一点,但是当我处理数千条记录时它太慢了(考虑到我每天也收到订单)所以我正在寻找为了更好/更有效的方法,希望没有循环,比如递归 CTE 或其他东西。
任何想法将不胜感激。 TIA
【问题讨论】:
-
在 SO 上运行 SQL 的总问题有很多答案。查看stackoverflow.com/questions/7357516/… 了解更多详情。或这份文件insidetsql.com/OVER_Clause_and_Ordered_Calculations.doc
-
注意:上面引用的问题和文档表明,对于几乎任何数据大小,游标都比半笛卡尔积快。我强烈建议避免使用此类解决方案。
标签: sql common-table-expression