簡體   English   中英

如何選擇最新行,其中每個行包含域表中所有可能值中的一個值?

[英]How to select the latest rows where each contains one value of all possible values found in a domain table?

ID Username City        RegisterYear
1  User1    New York    1990
2  User2    San Diego   2008
3  User3    Chicago     2009
4  User4    Los Angeles 1994
5  User5    San Diego   2004 

域表

ID  City
1   New York
2   San Diego
3   Los Angeles
4   Chicago

在此示例中,查詢將返回:

User1
User2
User3
user4

好吧,首先您需要用域表的ID列替換第一個表中的“城市”。 “城市”不是主鍵。

之后:

SELECT u.username
FROM   users u,
       domain d
WHERE  d.id = u.cityid
       AND u.registeryear = (SELECT MAX(u2.registeryear)
                             FROM   users u2
                             WHERE  u2.cityid = u.cityid);

由於問題並沒有提供太多細節,因此我使用了syrion所作的一些假設,並且還決定使用城市名稱來簡化操作。

select max(u.username) keep (dense_rank last order by registeryear) as username
from 
  domain d
  left outer join users u on (d.city = u.city)
group by d.city

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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