簡體   English   中英

Oracle查詢基於約束來獲取記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM