说明:
业务案例:会计部门希望报告前十名供应商的最新发票日期和平均发票金额。
写一个SELECT语句返回三列:
提示:您需要先连接两个表,然后再连接到派生表(子查询)
子查询部分:SELECT语句,返回前十个VendorID和AverageInv(名称和功能与外部查询中所述的相同)。将结果按适当的列分组,然后按AverageInv从大到小对结果进行排序。将子查询关联为BestVendors并将其连接到正确的表(两个表均共享一个关键字段)。
按适当的列对外部查询进行分组,然后按LatestInv对结果进行排序 最新到最老
我的代码
MAX(InvoiceDate)
AVG(InvoiceTotal)
下还有一条红线,以及FROM Invoices
下有一条红线,因为它们来自“发票”表。不是供应商。但是,如果我在外部查询中使用VendorName
,那么{{1}}是否会被识别?如何解决此问题并获得该问题正在寻找的结果集?
这些图片还显示了发票和供应商表中的一些示例数据
答案 0 :(得分:1)
尝试一下:
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