【发布时间】:2014-11-10 06:44:32
【问题描述】:
我发现了许多与此类似的主题,但没有一个我能很好地理解以解决我的具体案例。
A 有一个具有以下基本结构的表:
+------------------------+
| id | session ID | bal |
+------------------------+
| 0 | 00000002 | 100 |
| 1 | 00000002 | 120 |
| 2 | 00000002 | 140 |
| 3 | 00000001 | 900 |
| 4 | 00000001 | 800 |
| 5 | 00000001 | 500 |
+------------------------+
我需要创建一个 (Microsoft SQL) 查询,它根据 ID 列的顺序值返回每个唯一的 sessionID 以及第一个(“开始”)和最后一个(“结束”)bal 条目。结果如下所示:
+---------------------------+
| session ID | start | end |
+---------------------------+
| 00000002 | 100 | 140 |
| 00000001 | 900 | 500 |
+---------------------------+
我怎样才能做到这一点?
【问题讨论】:
-
你用的是什么数据库?
-
你能创建一个 sqlfiddle 吗?
-
OP 在帖子中提到 SQL Server...您是在寻找
min()和max(),还是根据id字段要求第一个和最后一个? -
我根据 ID 字段询问第一个和最后一个,如果您查看我想要的结果表,您会发现 start 可能高于 end,反之亦然。所以下面给出的 min() 和 max() 答案不起作用..
标签: sql sql-server group-by