SQL Server选择最大版本值

Manoj nayak

我在名为id和version的表中有两列,如下所示:

ID | Version |
1  | A.15    |
1  | Z.6     |
1  | C.5     |
1  | BD.3    |
1  | BD.2    |
1  | AB.13   |
2  | C.45    |
2  | Z.56    |
2  | Z.8     |

我的要求是我必须为表中的每个ID选择max(Version)。在这种情况下,我应该得到以下结果:

|ID | MAX(Version)|
| 1 | BD.3       |
| 2 | Z.56        |

但是我得到以下结果:

|ID | MAX(Version)|
| 1 | Z.6         |
| 2 | Z.8         |

当我使用此查询时:

SELECT ID,MAX(Version)
FROM table
GROUP BY ID

请建议我一个好的解决方案,以获得我想要的结果。谢谢你。

耶稣

尝试这个:

DECLARE @MyTable TABLE(ID INT, Version VARCHAR(10))

INSERT INTO @MyTable
VALUES (1,'A.15'), (1,'Z.6'), (1,'C.5'), (1,'BD.3'), (1,'BD.2'),
       (1,'AB.13'), (2,'C.45'), (2,'Z.56'), (2,'Z.8')

--
SELECT
    ID,
    Version
FROM
(
    SELECT
        ID,
        Version,
        ROW_NUMBER() OVER 
        (
            PARTITION BY    ID
            ORDER BY        LEN(LEFT(Version, CHARINDEX('.',Version)-1)) DESC, 
                            LEFT(Version, CHARINDEX('.',Version)-1) DESC, 
                            CAST(STUFF(Version, 1, CHARINDEX('.',Version),'') AS INT) DESC
        ) AS Pos
    FROM 
        @MyTable
) T
WHERE Pos = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据列 SQL Server 中的最大值选择行

来自分类Dev

SQL选择最大值

来自分类Dev

SQL Server中选择一行的最大值和最大值的列名作为两列

来自分类Dev

SQL选择最大值(COUNT)

来自分类Dev

从SQL选择中返回最大值

来自分类Dev

如何选择SQL输出的最大值

来自分类Dev

从列SQL中选择最大值

来自分类Dev

选择列的SQL最大值

来自分类Dev

使用 subQuery SQL 选择最大值

来自分类Dev

如何从SQL Server列中选择前3个最大值

来自分类Dev

在特定列SQL Server中选择具有最大值的行

来自分类Dev

选择主键,其中最大值为组别SQL Server

来自分类Dev

如何从sql server中选择具有最大值的数据行?

来自分类Dev

如何在SQL Server中按标题每天选择一列中的最大值

来自分类Dev

SQL SERVER 选择获得最大贷款的月份

来自分类Dev

选择最大版本值

来自分类Dev

SQL查询:选择子选择的最大值

来自分类Dev

SQL Server设置标识最大值

来自分类Dev

SQL Server Express 最大值

来自分类Dev

sql server:选择总和与值匹配的行

来自分类Dev

SQL Server:使用“值或全部”选择

来自分类Dev

从 xml 字段 sql server 中选择值

来自分类Dev

仅选择SQL关系中的最大值?

来自分类Dev

SQL-选择一行中的最大值

来自分类Dev

Oracle SQL:如何从派生列中选择最大值

来自分类Dev

SQL选择最大值4个联接

来自分类Dev

SQL-每列值选择最大日期行

来自分类Dev

SQL选择从结果最大值中获取的位置

来自分类Dev

选择所有最大值SQL查询