2012-05-24 67 views
1
SELECT OrderNumber, FIRST(ShippingName) as ShippingName FROM Orders 
GROUP BY OrderNumber 

這給出了一個錯誤,我該怎麼做?Group By First Row

+0

請在此背景下定義 「第一」。 –

+0

我知道你在想什麼,而不是使用'Max()',但它可以是任何行,但我只需要其中的一個。此示例不起作用:http://www.w3schools.com/sql/sql_func_first.asp –

+0

您是否還可以提及您收到的錯誤? –

回答

4

SQL Server不支持FIRST函數。

也許你想

SELECT OrderNumber, MIN(ShippingName) as ShippingName 
FROM Orders 
GROUP BY OrderNumber 

但是,可能不會。相反,我懷疑你的意思是......對於每個OrderNumber,在所有具有該OrderNumber的行中,按照某種順序選擇第一行的ShippingName

SELECT OrderNumber, 
    (
     SELECT TOP 1 ShippingName 
     FROM Orders AS OrdersInner 
     WHERE OrdersInner.OrderNumber = Orders.OrderNumber 
     ORDER BY OrdersInner.OrderDate, OrdersInner.OrderId 
    ) as ShippingName 
FROM Orders 
GROUP BY OrderNumber 

但我對你的需求和你的數據庫結構做了一些假設。

+0

好吧,讓我試試你的第二個例子,它可能工作。 –

0

您也許意味着:

SELECT TOP 1 OrderNumber, ShippingName 
FROM Orders 
ORDER BY OrderNumber DESC 
+0

這會影響所有列..不行。 –

+0

當您只選擇頂行時,羣組的意義何在。 – Rahul

+0

我的意思是ORDER BY – SoEnLion