[英]Oracle Query To Fetch Records Based On A Constraint
我有以下格式的表格:
ID FieldA LastUpdatedDate
1 1 7th Oct, 2014
2 2 7th Oct, 2014
3 3 7th Oct, 2014
4 1 8th Oct, 2014
5 2 8th Oct, 2014
6 1 8th Oct, 2014
7 2 9th Oct, 2014
8 4 9th Oct, 2014
我希望結果如下所示:
ID FieldA LastUpdatedDate
4 1 8th Oct, 2014
6 1 8th Oct, 2014
2 2 9th Oct, 2014
3 3 7th Oct, 2014
8 4 9th Oct, 2014
請注意,對於給定的日期,FieldA中只能有兩個具有相同值的條目,並且我想根據lastupdateddate
中所示的lastupdateddate
檢索條目。
您能建議一個查詢給我這樣的結果嗎?
如果我正確理解,對於fieldA
每個不同值,您fieldA
顯示最后一個LastUpdatedDate
的記錄。 rank
分析功能應該可以解決這個問題:
SELECT ID, FieldA, LastUpdatedDate
FROM (SELECT ID, FieldA, LastUpdatedDate,
RANK() OVER (PARTITION BY ID, FieldA
ORDER BY LastUpdatedDate DESC) AS rk
FROM my_table)
WHERE rk = 1
with lastD as -- get the last update date for every FieldA
(
select FieldA, max(LastUpdateDate) as lastDate
from my_table
group by FieldA
)
SELECT m.*
FROM my_table m
JOIN lastD
ON m.FieldA=lastD.FieldA
AND m.LastUpdateDate= lastD.lastDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.