ContractId ParentId VersionNo
32388437 NULL 0
32388439 2884617 1
32617644 2884617 2
33572734 2884617 3
我刚刚开始使用SQL。 我需要一个查询来从特定的表返回最大列versionNo的ContractId。你可以帮帮我吗?
SELECT MAX(VersionNo),ISNULL(ParentId,ContractId)
FROM table1
WHERE ParentId=ParentId GROUP by ISNULL(ParentId,ContractId)
该查询不返回列VersionNo具有Null
的行答案 0 :(得分:2)
使用CTE的另一个答案
WITH max_cte AS
( SELECT t.ContractId
, t.ParentId
, ROW_NUMBER() OVER (PARTITION BY t.ParentId ORDER BY t.VersionNo DESC) AS 'MaxVersion'
FROM table1 AS t
)
SELECT ContractId
, ParentId
FROM max_cte
WHERE MaxVersion = 1;
答案 1 :(得分:1)
select ParentId,ContractId,VersionNo
from
(
select ParentId,ContractId,VersionNo, max(VersionNo) Over(partition by ParentId) maxvers
from table1
) x
where VersionNo=maxvers
答案 2 :(得分:0)
select ISNULL(ParentId,ContractId)--,ContractId,VersionNo
from
(
select ParentId,ContractId,VersionNo, max(VersionNo) Over(partition by ParentId) maxvers, EndDate
from table1
) x
where VersionNo=maxvers