[英]select most recent comment on a table when ID is not unique
我有一個看起來像這樣的表:(使用Sql-server 2012)
ID------------DAY----------HOUR--COMMENT
00050064 | 2015-09-30 | 14:41 | Creaci¢n de Pedido UD3503-0000001 ==> UD4003
00050064 | 2015-09-30 | 11:52 | Se di¢ de alta el documento: UD4003-0000003
00050064 | 2015-09-30 | 11:42 | Asignaci¢n de t‚cnico: MANUEL REGALADO
00050064 | 2015-09-30 | 11:42 | Cambio de fecha y hora programa
00050064 | 2015-09-30 | 11:40 | SE PROGRAMARA POSTERIOR MENTE
00050064 | 2015-09-30 | 11:39 | PRUEBA NUMERO SERIE OS ANALISIS
我設法按日期和小時排序結果,這樣我可以在頂部看到最后的評論,但是問題是由於我的ID不唯一,所以我不知道如何選擇最新的評論。
我的查詢:
select * from
(
select gdoshistorial.c1 as ID,max(gdoshistorial.c3) as [DAY],
max(gdoshistorial.c4) as [TIME], gdoshistorial.c6 AS COMMENT from gdos
left join gdoshistorial on GDOSHISTORIAL.c1 = gdos.c1
where gdos.c1 = gdoshistorial.c1 and gdoshistorial.c1 = '00050064'
group by GDOSHISTORIAL.c1,GDOSHISTORIAL.c6
)v
order by [ID],[DAY],[TIME] desc
請幫助我找到一種選擇第一行並忽略重復ID的方法
預期結果示例:
ID------------DAY----------HOUR--COMMENT
00050064 | 2015-09-30 | 14:41 | Creaci¢n de Pedido UD3503-0000001 ==> UD4003
與其從同一個ID中獲取大量評論,不如我只想查看最新的評論。
select id, date, hour, comment from
(
select row_number() over(partition by id, day order by hour desc) as rn,
* from gdoshistorial ) t
where rn = 1
您可以使用row_number
來獲取每天和ID的最新信息。
注意:以上查詢將為您提供每天的最新評論。 如果您只需要最新評論,則無論何時,都可以更改
row_number() over(partition by id, day order by hour desc) as rn
至
row_number() over(partition by id order by day desc, hour desc) as rn
SELECT TOP 1 *
FROM (
SELECT gdoshistorial.c1 AS ID
,max(gdoshistorial.c3) AS [DAY]
,max(gdoshistorial.c4) AS [TIME]
,gdoshistorial.c6 AS COMMENT
FROM gdos
LEFT JOIN gdoshistorial ON GDOSHISTORIAL.c1 = gdos.c1
WHERE gdos.c1 = gdoshistorial.c1
AND gdoshistorial.c1 = '00050064'
GROUP BY GDOSHISTORIAL.c1
,GDOSHISTORIAL.c6
) v
ORDER BY
[DAY] DESC
,[TIME] DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.