【发布时间】:2022-10-04 18:23:44
【问题描述】:
我有一个类似结构的大桌子,如下所示......
| version | col1 | col2 |
| ------- | ---- | ---- |
| 1 | val1 | 3243 |
| 2 | val1 | 7542 |
| 3 | val1 | 7322 |
| 4 | val1 | 8632 |
| 1 | val2 | 1948 |
| 2 | val2 | 0491 |
| 1 | val3 | 6282 |
| 1 | val4 | 9283 |
| 2 | val4 | 8272 |
| 3 | val4 | 0029 |
| 4 | val4 | 1279 |
我试图从version 中找到具有最高数值的行,并将col1 中具有相同值的所有行显示为第一行。我想要的输出如下...
| version | col1 | col2 | | version | col1 | col2 |
| ------- | ---- | ---- | | ------- | ---- | ---- |
| 1 | val1 | 3243 | | 1 | val4 | 9283 |
| 2 | val1 | 7542 | OR | 2 | val4 | 8272 |
| 3 | val1 | 7322 | | 3 | val4 | 0029 |
| 4 | val1 | 8632 | | 4 | val4 | 1279 |
最后一组行并不重要。仅重要的是选择包含最高版本号的行并与包含相同col1 值的其他行连接。
我的想法是使用以下方法找到第一行:
SELECT a.* FROM (SELECT TOP(1) * FROM table ORDER BY version DESC) a
并加入其他行,但我不知道该怎么做。
谁能帮我写一个查询来实现这些结果之一?
【问题讨论】:
-
因为有二
col1具有“最高”值 (4) 的行如何确定应该返回哪个? -
我无法理解您要实现的逻辑。看看你是否可以edit你的问题包括一些详细的解释。另外,为什么您有其他期望的结果?
-
@PM77-1 我已按问题更新。希望它更清楚一点。
标签: sql-server