Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:从两个相关表中选择最大值_Sql_Sql Server_Oracle_Subquery_Rank - Fatal编程技术网

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