【发布时间】:2017-04-11 03:20:18
【问题描述】:
有这样的数据:
id text bit date
1 row 1 2016-11-24
2 row 1 2016-11-25
3 row 0 2016-11-26
4 row 1 2016-11-27
我想根据文本和位列不同的位置来选择数据,但基于某种顺序,在这种情况下是 id,数据在两个相同的行之间发生变化,它应该在选择时复制这一行。
所以,如果我在 SQL 上使用distinct,我会得到第 1 行和第 3 行,但我想检索第 1、3 和 4 行,因为即使第 1 行和第 4 行相同,第 3 行在排序时介于两者之间身份证。
使用更大的数据集,例如:
id text bit date
1 row 1 2016-11-24
2 row 1 2016-11-25
3 row 0 2016-11-26
4 row 1 2016-11-27
5 foo 1 2016-11-28
6 bar 1 2016-11-29
7 row 1 2016-11-30
8 row 0 2016-12-01
9 row 0 2016-12-02
10 row 1 2016-12-03
同样,在 text 和 bit 列上选择 distinct,查询将检索第 1、3、5 和 6 行,但实际上我想要第 1、3、4、5、6、7、8 和 10 行。
【问题讨论】:
-
对不起,如果标题有点混乱,但我找不到更好的方式。
-
请显示一个更大的数据集,其中显示所有边缘情况。我不遵循你的逻辑。
-
添加了一个数据不多的案例,看看是否有帮助。
标签: sql-server select distinct