在我的地址表中,我有:Unique_ID、Address_Type、Street、City、State、Zip、Effective_Date
每個 Unique_ID 可以有多種地址型別(1L、1P、AP、PO 和 AR)。
我只想為每個 Unique_ID 選擇一個地址。
如果此人的地址位于 UT,我想在 UT 是關聯狀態的所有地址型別中選擇具有最新 Effective_Date 的地址型別。
否則,如果沒有地址在 UT,那么我想要最近 Effective_Date 的記錄。
我考慮過使用 CASE,但當我每人需要一行時,它只會為該人擁有的每個地址回傳一行。
我有一個使用 SQL Plus 的 Oracle 表。
uj5u.com熱心網友回復:
我不確定 Oracle 和 SQL plus 是否使用視窗函式,但這就是我在 SQL Server 中的做法:
SELECT
Unique_ID,
Address_Type,
Street,
City,
State,
Zip,
Effective_Date
FROM ( SELECT
*,
DENSE_RANK() OVER(PARTIITON BY Unique_ID ORDER BY Priority, Effective_Date DESC) [Rank]
FROM ( SELECT
*,
CASE State WHEN 'UT' THEN 1 ELSE 2 END AS [Priority]
FROM Address
) [PrioritizedAddresses]
) RankedAdresses
WHERE [Rank] = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517912.html
標籤:sql甲骨文
下一篇:一個表的總和值取決于另一個表
