【发布时间】:2021-11-03 15:51:51
【问题描述】:
原始数据集是这样的(但要长很多)
| Id | Bcolumn |
|---|---|
| 123 | 5 |
| 124 | 5 |
| 125 | 6 |
| 126 | 7 |
| 127 | 7 |
| 128 | 8 |
| 129 | 8 |
| 130 | 8 |
| 131 | 8 |
| 132 | 5 |
| 133 | 5 |
我需要在这个集合上的 Bcolumn 上做类似 DISTINCT 的东西,但结果集的顺序必须与默认集的顺序相同。并且 5 必须在集合的开头和集合的结尾。所以基本上结果应该是这样的。
| Id | Bcolumn |
|---|---|
| 124 | 5 |
| 125 | 6 |
| 126 | 7 |
| 130 | 8 |
| 133 | 5 |
在我的情况下,Id 列的值并不重要,因此结果的第一组是 124/5,但 123/5 也适用于我。我刚刚添加了 ID 列,因为我想在一个花哨的 SELECT 中以某种方式使用 Id 列。
最初我正在考虑使用 DISTINCT,但我意识到结果集不会包含 Bcolumn 上 5 的两条记录。
所以目前我最好的选择是使用 fetch-next/cursor 之类的东西,创建一个临时表,但这会又大又丑,我希望这可以以更好的方式完成。
注意 - 我使用的是 MS SQL 2008,但如果需要,我可以升级数据库。
【问题讨论】:
-
但如果需要我可以升级数据库 - 那你应该升级!
标签: sql sql-server-2008