[英]SQL query to return unique top row for each group
尝试编写一个查询,该查询将为每个系统名称返回唯一记录。
由于存在同一产品的多个版本,因此现有查询针对每个systemName返回多个记录。 我可以按版本号排序,但只希望保留每个系统的最高版本号。
SELECT DISTINCT v.sysName
,v.groupName
,a.versionNumb
,b.userName
FROM table1 AS a
INNER JOIN table2 AS v ON v.sID = a.sID
INNER JOIN table3 AS b ON v.sID = b.sID
WHERE a.versionNumb LIKE '10.%'
AND v.groupName LIKE '%' + @groupVar
ORDER BY a.versionNumb DESC
尝试使用ROW_NUMBER()排序并返回行值,但我仍然不是100%提取正确的数据。
任何帮助,将不胜感激!
只需使用MAX()
和GROUP BY
:
SELECT v.sysName,
v.groupName,
MAX(a.versionNumb) as versionNumb,
b.userName
FROM table1 AS a
INNER JOIN table2 AS v ON v.sID = a.sID
INNER JOIN table3 AS b ON v.sID = b.sID
WHERE a.versionNumb LIKE '10.%'
AND v.groupName LIKE '%' + @groupVar
GROUP BY v.sysName, v.groupName, b.userName
我删除了您的DISTINCT
因为它与GROUP BY
是多余的
您可以使用查询来按系统名称对GROUP BY进行查询,并在JOIN之后使用所需的所有信息
SELECT d.sysName, max (d.versionNumb)
FROM (select * from table1 AS a
INNER JOIN table2 AS v ON v.sID = a.sID) as d
Group by d.sysName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.