Tsql 我需要在一个通信列上获取一个id,最多可获取另一列的id

Tsql 我需要在一个通信列上获取一个id,最多可获取另一列的id,tsql,Tsql,我只是从SQL开始。 我需要一个查询来从特定表返回列versionNo的最大值的收缩。你能帮我吗 ContractId ParentId VersionNo 32388437 NULL 0 32388439 2884617 1 32617644 2884617 2 33572734 2884617 3 该查询不会返回列VersionNo具有Null的行,也不会返回使用CTE的另一个答案 SELECT MAX(Ver

我只是从SQL开始。 我需要一个查询来从特定表返回列versionNo的最大值的收缩。你能帮我吗

ContractId  ParentId    VersionNo
32388437    NULL         0
32388439    2884617      1
32617644    2884617      2
33572734    2884617      3

该查询不会返回列VersionNo具有Null的行,也不会返回使用CTE的另一个答案

SELECT  MAX(VersionNo),ISNULL(ParentId,ContractId) 
FROM table1 
WHERE ParentId=ParentId GROUP by  ISNULL(ParentId,ContractId)
select  ParentId,ContractId,VersionNo 
from
( 
select ParentId,ContractId,VersionNo, max(VersionNo) Over(partition by ParentId) maxvers
from table1
) x
where VersionNo=maxvers

使用CTE的另一个答案

select  ParentId,ContractId,VersionNo 
from
( 
select ParentId,ContractId,VersionNo, max(VersionNo) Over(partition by ParentId) maxvers
from table1
) x
where VersionNo=maxvers
基于



基于。

是一个数字。这个解决方案不行。当我有一个版本号为“0”且ParentID为“Null”的construct时,情况是相同的。可以使用版本号0。我所需要的只是从一个特定的表行中选择:construcd,该行在列VersionNo中具有最大值。在我的第一个例子中,正确答案是33572734 2884617 3。我找不到返回该信息的正确查询…我需要在VersionNo中具有最大值的Compract。请尝试此查询,如果它更像您要查找的内容,请告诉我我看不到任何查询:(谢谢。效果很好!是一个数字。不适合此解决方案。当我有一个版本号为“0”且ParentID为“Null”的construct时,情况是一样的。版本号为0也可以。我只需要从一个特定的表行中选择:列中版本号为最大值的construct。在我的第一个示例中,正确答案是33572734 2884617 3.我找不到正确的查询来返回该信息…我需要在VersionNo中具有最大值的Compract。请尝试此查询,如果它更像您要查找的内容,请告诉我我看不到任何查询:(谢谢。效果很好!为什么ParentId=ParentId?数据中没有版本no have Null。Jayvee的答案是可以的。Jayvee的答案没有复选标记Frisbee…这意味着?:)为什么ParentId=ParentId?数据中没有版本no have Null。Jayvee的答案是可以的。Jayvee的答案没有复选标记Frisbee…这意味着?:)不工作…u放入where condition MaxVersio=1。这是什么意思?虽然命名列MaxVersion可能会产生误导,但查询返回正确的结果。对于具有最大VersionNo值的行,MaxVersion将始终为1。也许我应该将其称为Sort、Order或Sequence?不工作…u放入where condiTIONE MaxVersio=1。这是什么意思?该查询返回正确的结果,尽管将列命名为MaxVersion可能会产生误导。对于具有最大版本号值的行,MaxVersion将始终为1。也许我应该将其命名为Sort、Order或Sequence?
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