【发布时间】:2013-10-18 21:24:27
【问题描述】:
对于这个表:
+----+--------+-------+
| ID | Status | Value |
+----+--------+-------+
| 1 | 1 | 4 |
| 2 | 1 | 7 |
| 3 | 1 | 9 |
| 4 | 2 | 1 |
| 5 | 2 | 7 |
| 6 | 1 | 8 |
| 7 | 1 | 9 |
| 8 | 2 | 1 |
| 9 | 0 | 4 |
| 10 | 0 | 3 |
| 11 | 0 | 8 |
| 12 | 1 | 9 |
| 13 | 3 | 1 |
+----+--------+-------+
我需要对具有相同Status 的连续组求和才能产生此结果。
+--------+------------+
| Status | Sum(Value) |
+--------+------------+
| 1 | 20 |
| 2 | 8 |
| 1 | 17 |
| 2 | 1 |
| 0 | 15 |
| 1 | 9 |
| 3 | 1 |
+--------+------------+
如何在 SQL Server 中做到这一点?
注意:ID 列中的值是连续的。
【问题讨论】:
-
ID值是否保证是连续的?如果不能保证它们是连续的,那么如果缺少ID=2的行会发生什么情况? Ids1和3的行是否仍被视为在同一组中?另请删除图像并以文本形式提供示例数据。这更易于访问,并且使潜在的回答者更容易设置测试表,而无需自己输入。查看标记为 SQL Server 的其他问题以获取示例。 -
是的,ID 值保证是连续的。
标签: sql sql-server select group-by gaps-and-islands