gpt4 book ai didi

sql - 根据sql server中的最高版本从sql结果中获取前1个结果

转载 作者:行者123 更新时间:2023-12-02 08:40:54 24 4
gpt4 key购买 nike

我有一个基本查询,我在其中看到用户名列表和他们正在使用的应用程序版本:

Username AppVersion  Email           First Name
-------- ---------- ----- ----------
user1 2.3 user1@aol.com User 1
user1 2.4 user1@aol.com User 1
user1 2.5 user1@aol.com User 1
user2 2.3 user2@aol.com User 2
user2 2.4 user2@aol.com User 2
user3 2.4 user3@aol.com User 3
user3 2.5 user3@aol.com User 3

我的 SQL 是:

SELECT TOP 100 LoginLog.SalesRepID, LoginLog.AppVersion FROM  LoginLog
GROUP BY LoginLog.SalesRepID, LoginLog.AppVersion
ORDER BY SalesRepID, LoginLog.AppVersion DESC

但是我真正想要从这个列表中得到的是用户正在使用的应用程序的最新版本,所以我的结果实际上是:

Username AppVersion  Email           First Name
-------- ---------- ----- ----------
user1 2.5 user1@aol.com User 1
user2 2.4 user2@aol.com User 2
user3 2.5 user3@aol.com User 3

如何修改此查询以显示那种结果?

编辑:

抱歉,我在这里不够清楚 - 我试图简化我的问题,但不应该这样做。在这个例子中我遗漏了几个额外的列 - #FACEPALM

见上文修订 - 对不起大家!!!

最佳答案

ROW_NUMBER 使用公用表表达式:

WITH cte 
AS (SELECT Username,
AppVersion,
RN = Row_number()
OVER (
partition BY username
ORDER BY Cast('/' + Replace(AppVersion, '.', '/') + '/'
AS
HIERARCHYID)
DESC
)
FROM loginlog)
SELECT Username, AppVersion FROM CTE
WHERE RN = 1
ORDER BY UserName

DEMO

版本归功于此:

How Can I Sort A 'Version Number' Column Generically Using a SQL Server Query

关于sql - 根据sql server中的最高版本从sql结果中获取前1个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com