sql - 在行列表中查找最大值并返回整行 SQL Server
问题描述
嗨,我想弄清楚如何从列中具有最高值的表中返回一行。在我可以这样做之前,我必须获取该列的子字符串并将其转换为 INT。
主表名称为“CalendarPeriod”
这是列的示例
财政期 - 0120
我必须从左边取两个字符,这将是我试图找到的 MAX 值的数字
下面是列名称的行列表。FiscalPeriod 是我需要 Substring 并转换为 Int 以找到最大值的列。
此查询的结果应返回 FiscalPeriod 为“1220”且 Id 为“1134”的行,但它返回的是第一个。
这是我找到的查询,但我无法弄清楚如何将其转换回 NVARCHAR。我认为,如果我在内部联接中添加常规会计期间,我将能够在 Where 子句中使用它来获得最大值,但我错了。
我也在内部加入另一个表“CalendarPeriodHeader”,其中包含我还需要在哪里进行比较的年份。这也可能会弄乱查询结果,但我很难过下面是我到目前为止的查询。
Select Top 1 cp.*
From CalendarPeriod as cp
INNER JOIN
(
Select Top 1 Id, Max(Cast(Substring(FiscalPeriod, 1,2) as Int)) as MAXFiscal, FiscalPeriod
From CalendarPeriod
Group By Id, FiscalPeriod
)cp2
On cp2.Id = cp.Id
Inner Join CalendarPeriodHeader as header on header.Id = cp.HeaderId
Where cp2.FiscalPeriod = cp.FiscalPeriod And header.Year = 2020
解决方案
我会使用这个查询:SELECT TOP 1 * FROM dbo.CalendarPeriod ORDER BY Cast(Substring(FiscalPeriod, 1,2) as Int) DESC
推荐阅读
- r - 使用 getsymbols 中的特殊字符进行分析的问题 (PerformanceAnalytics)
- json - 如何访问 json 数据(react-native)expo 的值 0
- regex - 正则表达式捕获一个组,但前提是前面有一个字符串,后面有一个字符串
- apache - Htaccess 重定向除第一个端点之外的所有端点
- python - 异步传输和协议将接收到的数据流式传输到字节数组中进行处理
- html - 旋转的图像超出父 div
- linux - Sed is truncating first character if it is starting with "v" while appending in file
- r - 使用 ifelse 更改 R 中的列
- java - 我想为android webrtc添加一个过滤器。例如,我想给视频帧一个模糊效果
- node.js - 在 nosql 数据库(Mongo)中为每个用户保存对象数据