代码之家  ›  专栏  ›  技术社区  ›  RudziankoÅ­

SQL:从两个相关表中选择最大值

  •  -2
  • RudziankoÅ­  · 技术社区  · 7 年前

    我有桌子: Waiter WaiterDetail Cafe

    Cafe:
         *CafeId(primary)
    
    Waiter:  
         *WaiterId(primary)
         *CafeId
         *HiredDate
    
    WaiterDetail:
         *WaiterDetailID(primary)
         *WaiterId
         *CreatedDate
    

    查询将是什么样子 Oracle MS SQL Server ?

    1 回复  |  直到 7 年前
        1
  •  1
  •   MT0    7 年前

    如果我没有记错的话,你要:为每个咖啡馆找服务员先用(最早) 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;