加入子查询

当你想要从子/详细信息表中获取聚合数据并显示与父/头表中的记录一起时,通常会使用加入子查询。例如,你可能希望获取子记录的计数,子记录中某些数字列的平均值,或基于日期或数字字段的顶部或底部行。此示例使用别名,当涉及多个表时,可论证使查询更容易阅读。这是一个相当典型的子查询连接的样子。在这种情况下,我们从父表 Purchase Orders 中检索所有行,并仅检索子表 PurchaseOrderLineItems 的每个父记录的第一行。

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, Min(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