1
如何選擇適當的記錄時,以選擇適當的記錄/從一組記錄的記錄使用任一MAX或MIN集合函數時,使得記錄/記錄是否與聚合函數返回的值相匹配?如何/從一組記錄的記錄使用任一MAX或MIN集合函數
我需要,以便找到在每個類別中最昂貴的產品使用NorthWind.products數據庫表(http://www.zentut.com/wp-content/uploads/downloads/2013/06/Northwind-Sample-Database-Diagram.pdf)。到目前爲止,我已經試過兩個變種:
SELECT CategoryID, ProductID, ProductName, MAX(UnitPrice) MostExpensive
FROM [NORTHWND].[dbo].[Products] as A
GROUP BY CategoryID;
此代碼將產生錯誤「列NORTHWND.dbo.Products.ProductID'在選擇列表中無效,因爲它不是在聚合函數或GROUP包含BY條款「。我完全明白了原因。沒關係。
第二個變量是:
SELECT CategoryID, ProductID, ProductName
FROM [NORTHWND].[dbo].[Products] as A
WHERE UnitPrice = (
SELECT MAX(UnitPrice) FROM [NORTHWND].[dbo].[Products] AS B GROUP BY CategoryID HAVING A.CategoryID = B.CategoryID
)
這一個工作正常,返回的記錄是正確的,但我想在第一個SELECT 4列,第四應該是最高價格每個類別。我可以更改SQL查詢來實現這一目標,或者我應該嘗試第三方案?