2015-11-04 27 views
0

enter image description here如果不使用頂級函數,試圖通過最小值列出行,但不使用頂級函數顯示一行的最小值的SQL

這裏是我的代碼,

> SELECT COUNT(SOH.SalesOrderNumber) AS NumberOfSales, SP.Name FROM Person.StateProvince SP 
JOIN Person.Address A ON SP.StateProvinceID = A.StateProvinceID 
JOIN Sales.SalesTerritory AS ST ON SP.TerritoryID = ST.TerritoryID 
JOIN Person.BusinessEntityAddress BEA ON A.AddressID = BEA.AddressID 
JOIN Sales.SalesOrderHeader AS SOH ON BEA.BusinessEntityID = SOH.CustomerID 
WHERE ST.Name = 'Australia' 
GROUP BY SP.Name 

理想的情況下,結果應該是 NumberOfSale名稱 94塔斯馬尼亞

謝謝!

回答

2

這將是一個另類:

SELECT NumberOfSales 
    ,NAME 
FROM (
    SELECT COUNT(SOH.SalesOrderNumber) AS NumberOfSales 
     , SP.NAME 
     , ROW_NUMBER() OVER (
      ORDER BY COUNT(SOH.SalesOrderNumber)) RN 
    FROM Person.StateProvince SP 
    INNER JOIN Person.Address A 
     ON SP.StateProvinceID = A.StateProvinceID 
    INNER JOIN Sales.SalesTerritory AS ST 
     ON SP.TerritoryID = ST.TerritoryID 
    INNER JOIN Person.BusinessEntityAddress BEA 
     ON A.AddressID = BEA.AddressID 
    INNER JOIN Sales.SalesOrderHeader AS SOH 
     ON BEA.BusinessEntityID = SOH.CustomerID 
    WHERE ST.NAME = 'Australia' 
    GROUP BY SP.NAME 
    ) RS 
WHERE RN = 1 
+0

我與NumberOfSales錯誤,第一行名稱。 (無效的列名稱) 以及RN在哪裏結束。 (無效的語法在哪裏,期望AS,ID或Quoted_ID)(RN的無效列名) –

+0

@KinLoo立即嘗試,我忘記爲結果集添加別名。 –

+0

謝謝,完美! –

相關問題