尝试编写一个可以为每个系统名称返回唯一记录的查询。
现有查询为每个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%获取正确的数据。
任何帮助将不胜感激!
答案 0 :(得分:0)
只需使用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
答案 1 :(得分:0)
您可以按系统名称使用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