返回SQL中最后一列字段的较大值



我面临着返回"entryId";字段|"做记号根据日期的不同,每个entryId字段将有不同的数字,并且我需要选择相同的值,并且在"之前有一个更高的数字|"做记号

例如,我需要选择entryId=
'800181373149|3',"800181373112|3",'800181373186|3'

而不是'800181373186|1'

以下是我的代码:

SELECT 
[entryId]
,[startDate]
,[endDate]
FROM [data]
WHERE entryId LIKE '8001813731%';

这是输出:

endDate2021:09-28T16:03:00-05:00
entryIdstartDate
800181373149|32021-09-28T07:21:00-05:00
800181373112|32021-09-28T05:21:00-07:002021:09-28T12:00:00-07:00
800181373186|32021-09-28T07:21:00-05:002021:09-28T14:00:00-05:00
800181373186|12021-09-28T07:21:00-05:00

使用由管道前面的部分划分的row_number。

SELECT 
[entryId]
, [startDate]
, [endDate]
FROM
(
SELECT 
entryId
, startDate
, endDate
, rn = ROW_NUMBER() OVER (PARTITION BY LEFT(entryId, PATINDEX('%_|%', entryId)) ORDER BY entryId)
FROM [data]
WHERE entryId LIKE '8001813731%'
) q
WHERE rn = 1;

不确定您想要的是具有最高值的单个结果,还是具有最高起始日期编号的所有值。无论如何,在第八种情况下,您可以使用AND运算符生成第二个参数来添加startdate值。

SELECT 
[entryId]
,[startDate]
,[endDate]
FROM [data]
WHERE entryId LIKE '8001813731%' AND startDate > 1;

相关内容

  • 没有找到相关文章

最新更新