加入子查询

当你想要从子/详细信息表中获取聚合数据(例如 Count,Avg,Max 或 Min)并显示与父/ header 表中的记录一起时,通常会使用加入子查询。例如,你可能希望根据日期或标识检索顶部/第一个子行,或者你希望计算所有子行数或平均值。

此示例使用别名,当涉及多个表时,这些别名使查询更易于阅读。在这种情况下,我们从父表 Purchase Orders 中检索所有行,并从子表 PurchaseOrderLineItems 中仅检索最后一个(或最近的)子行。此示例假定子表使用增量数字 Id。

SELECT po.Id, po.PODate, po.VendorName, po.Status, item.ItemNo, 
  item.Description, item.Cost, item.Price
FROM PurchaseOrders po
LEFT JOIN 
     (
       SELECT l.PurchaseOrderId, l.ItemNo, l.Description, l.Cost, l.Price, Max(l.id) as Id 
       FROM PurchaseOrderLineItems l
       GROUP BY l.PurchaseOrderId, l.ItemNo, l.Description, l.Cost, l.Price
     ) AS item ON item.PurchaseOrderId = po.Id