加入子查詢

當你想要從子/詳細資訊表中獲取聚合資料(例如 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