[英]SELECT statement with sub-query
指示:
業務案例:會計部門希望報告前十名供應商的最后發票日期和平均發票金額。
編寫一個返回三列的 SELECT 語句:
提示:在加入派生表(子查詢)之前,您需要加入兩個表
子查詢部分:SELECT 語句,返回前十名 VendorID 和 AverageInv(與外部查詢中描述的名稱和功能相同)。 按適當的列對結果進行分組,並按AverageInv 從最大到最小對結果進行排序。 將子查詢關聯為 BestVendors 並將其加入正確的表(兩者共享一個關鍵字段)。
按適當的列對外部查詢進行分組,並按最新到最舊的 LatexInv 對結果進行排序
我的代碼
SELECT VendorName, MAX(InvoiceDate) AS LatestInv, AVG(InvoiceTotal) AS AverageInv
FROM Vendors v JOIN
(SELECT TOP 10 VendorID, AVG(InvoiceTotal) AS AverageInv
FROM Invoices
GROUP BY VendorID
ORDER BY AverageInv DESC) AS BestVendors
ON v.VendorID = BestVendors.VendorID
GROUP BY VendorName
ORDER BY LatestInv
MAX(InvoiceDate)
和AVG(InvoiceTotal)
下面有一條紅線,因為它們來自 Invoices 表。 不是供應商。 但是,如果我在外部查詢中使用FROM Invoices
那么VendorName
將不會被識別? 如何解決此問題並獲得此問題正在尋找的結果集?
這些圖片還顯示了發票和供應商表中的一些示例數據
嘗試這個:
SELECT VendorName, BestVendors.LatestInv, BestVendors.AverageInv
FROM Vendors v
INNER JOIN
(
SELECT TOP 10 VendorID
,AVG(InvoiceTotal) AS AverageInv
,MAX(InvoiceDate) AS LatestInv
FROM Invoices
GROUP BY VendorID
ORDER BY AverageInv DESC
) AS BestVendors
ON v.VendorID = BestVendors.VendorID
ORDER BY LatestInv DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.