SQL:从两个相关表中选择最大值
我有桌子:SQL:从两个相关表中选择最大值,sql,sql-server,oracle,subquery,rank,Sql,Sql Server,Oracle,Subquery,Rank,我有桌子:Waiter和waiterdeail和Cafe。咖啡馆可以有很多服务员,服务员可能有很多服务员的细节。我想通过field CreatedDate找到最老的服务员的详细信息,第一个被雇佣的服务员的详细信息 Cafe: *CafeId(primary) Waiter: *WaiterId(primary) *CafeId *HiredDate WaiterDetail: *WaiterDetailID(primary) *
Waiter
和waiterdeail
和Cafe
。咖啡馆可以有很多服务员,服务员可能有很多服务员的细节。我想通过field CreatedDate找到最老的服务员的详细信息,第一个被雇佣的服务员的详细信息
Cafe:
*CafeId(primary)
Waiter:
*WaiterId(primary)
*CafeId
*HiredDate
WaiterDetail:
*WaiterDetailID(primary)
*WaiterId
*CreatedDate
查询
Oracle
和MS SQL Server
会是什么样子?如果我的回答正确,您希望:每个咖啡馆都能找到第一个(最早的)HiredDate
的服务员,对于那个服务员,找到最早(最早的)CreatedDate
的详细信息。因此,对于Oracle(可能还有SQL Server),类似这样的内容:
SELECT *
FROM (
SELECT w.*,
d.*,
ROW_NUMBER() OVER ( PARTITION BY CafeID
ORDER BY w.HiredDate ASC,
d.CreatedDate ASC ) AS rn
FROM Waiter w
INNER JOIN WaiterDetail d
ON ( w.WaiterId = d.WaiterId )
)
WHERE rn = 1;
看起来像是家庭作业?请提供示例数据和预期结果。为什么您同时要求sql server和oracle使用此数据?@Tanner,我在项目中同时使用了这两种数据,并且我考虑使用CreatedDate desc的
dense\u-rank-first order,但不确定它是否适用于ms sql server