我有一個用戶回復的資料庫。用戶可以隨時回傳并更改他們對任何給定問題的回答。我可以使用什么查詢來最好地僅獲取用戶最新的回應?我知道這與日期變數上的 MAX() 函式有關,但我被細節絆倒了。這是一個例子:
USER_ID SURVEY_NAME QUESTION_NAME UPDATE_DATE RESPONSE
A1 BIG SURVEY Q1 01/01/22 BAD
A1 BIG SURVEY Q2 01/01/22 GOOD
A1 BIG SURVEY Q3 01/01/22 OK
A1 BIG SURVEY Q1 01/08/22 GOOD
從上面的資料中,我只想引入這個:
USER_ID SURVEY_NAME QUESTION_NAME UPDATE_DATE RESPONSE
A1 BIG SURVEY Q2 01/01/22 GOOD
A1 BIG SURVEY Q3 01/01/22 OK
A1 BIG SURVEY Q1 01/08/22 GOOD
uj5u.com熱心網友回復:
您可以使用row_number()查找每個 (USER_ID,SURVEY_NAME,QUESTION_NAME) 三元組的最新日期的行:
with cte as
(select USER_ID,SURVEY_NAME,QUESTION_NAME,UPDATE_DATE,RESPONSE,
row_number()
over(partition by USER_ID,SURVEY_NAME,QUESTION_NAME
order by UPDATE_DATE desc) rn
from mytable)
select USER_ID,SURVEY_NAME,QUESTION_NAME,UPDATE_DATE,RESPONSE
from cte
where rn = 1;
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447526.html
