【发布时间】:2021-01-26 10:30:31
【问题描述】:
我在 SQL Server 中有一个这样的数据库表:
+----+--------+
| ID | Number |
+----+--------+
| 1 | 4 |
| 2 | 2 |
| 3 | 6 |
| 4 | 5 |
| 5 | 3 |
| 6 | 2 |
| 7 | 6 |
| 8 | 4 |
| 9 | 5 |
| 10 | 1 |
| 11 | 6 |
| 12 | 4 |
| 13 | 2 |
| 14 | 6 |
+----+--------+
我想在列号中获取与最后一行或最后2行或最后3行或....相同的行的所有值,当找到这些值时,将继续获取值接下来出现的并数其出现的次数。
结果输出如下:
- 如果与最后一行相同:
-
我们看到 Number 列中 6 旁边的数字是 4 和 5。
-
时间出现在第 6,4 对的列数为 2,第 6,5 对为 1。
+---------------------+-------------------------+--------------+ | "Condition to find" | "Next Number in column" | Times appear | +---------------------+-------------------------+--------------+ | 6 | 5 | 1 | | 6 | 4 | 2 | +---------------------+-------------------------+--------------+
-
如果与最后两行相同:
+---------------------+-------------------------+--------------+ | "Condition to find" | "Next Number in column" | Times appear | +---------------------+-------------------------+--------------+ | 2,6 | 5 | 1 | | 2,6 | 4 | 1 | +---------------------+-------------------------+--------------+ -
如果与最后3行相同:
+---------------------+-------------------------+--------------+ | "Condition to find" | "Next Number in column" | Times appear | +---------------------+-------------------------+--------------+ | 4,2,6 | 5 | 1 | +---------------------+-------------------------+--------------+ -
如果最后 4,5,6...行,查找直到出现时间返回 0
+---------------------+-------------------------+--------------+ | "Condition to find" | "Next Number in column" | Times appear | +---------------------+-------------------------+--------------+ | 6,4,2,6 | | | +---------------------+-------------------------+--------------+
任何想法如何得到这个。非常感谢!
【问题讨论】:
-
SQL Server 版本是多少?
-
我使用的是 sql server 2008!
标签: sql sql-server duplicates