gpt4 book ai didi

sql - 从两列中选择最大版本号

转载 作者:行者123 更新时间:2023-12-04 01:08:22 24 4
gpt4 key购买 nike

这与我之前提出的另一个问题有关。如果您快速扫描它,您可能会对此有更好的理解。 Version Numbers float, decimal or double

我在数据库表中有两个列和一个外部列。 [Version] 列和 [Revision] 列。这些与版本号有关。 例如版本 1,修订版 2 = v1.2

我需要做的是获取特定外键的最大版本号。

这是我目前所拥有的:

SELECT f.[pkFileID]
,x.[fkDocumentHeaderID]
,f.[fkDocumentID]
,x.[Version]
,x.[Revision]
,f.[FileURL]
,f.[UploadedBy]
,f.[UploadedDate]
FROM
(
SELECT
docs.[fkDocumentHeaderID]
,MAX([Version]) AS Version
,MAX([Revision]) AS Revision
FROM
[ClinicalGuidanceV2].[dbo].[tbl_DocumentFiles]
INNER JOIN
dbo.tbl_Documents docs ON [fkDocumentID] = [pkDocumentID]
GROUP BY
docs.[fkDocumentHeaderID]
)
AS x
INNER JOIN
dbo.tbl_DocumentFiles f ON
f.[fkDocumentHeaderID] = x.[fkDocumentHeaderID] AND
f.[Version] = x.[Version] AND
f.[Revision] = x.[Revision]

基本上是抓取最大值并连接回自身。这显然不起作用,因为如果我有版本号 1.11.22.0,我从上述查询返回的最大值是2.2(不存在)。

我需要做的(我认为)是选择最大 [Version],然后为那个 [Version] 选择最大 [Revision],但我不太清楚如何做到这一点。

欢迎任何帮助、建议和问题。

谢谢。

最佳答案

你可以把它改成

SELECT  f.[pkFileID]
,x.[fkDocumentHeaderID]
,f.[fkDocumentID]
,x.[Version]
,x.[Revision]
,f.[FileURL]
,f.[UploadedBy]
,f.[UploadedDate]
FROM (
SELECT docs.[fkDocumentHeaderID]
,MAX([Version] * 100000 + [Revision]) AS [VersionRevision]
FROM [ClinicalGuidanceV2].[dbo].[tbl_DocumentFiles]
INNER JOIN dbo.tbl_Documents docs
ON [fkDocumentID] = [pkDocumentID]
GROUP BY
docs.[fkDocumentHeaderID]
)AS x
INNER JOIN dbo.tbl_DocumentFiles f
ON f.[fkDocumentHeaderID] = x.[fkDocumentHeaderID]
AND f.[Version] * 100000 + f.[Revision] = x.[VersionRevision]

想法是将 Version 乘以一个足够大的常量,这样它就不会与 revision 发生冲突(我已经取了 100.000,但任何值都可以)。

之后,您的 JOIN 执行相同的操作以检索记录。

关于sql - 从两列中选择最大版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194986/

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