2013-07-19 18 views
0

彙總(如計數)列的值要顯示的彙總列由SQL語句組的一部分內容。 實施例:我如何找回它使用GROUPBY列

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders 
WHERE Orders.ShipperID=Shippers.ShipperID 
GROUP BY ShipperName 

在上述例子中,輸出給我算結果之一,而我甚至需要聚集orders.orderID實際值。所以說,如果一個結果計數顯示我2.我需要知道這兩個已分組的值。這個結果應該是同一個表中的另一列。

回答

0

嘗試這與GROUP_CONCAT

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders , array_agg(Orders.OrderID) as which_are_those FROM Orders 
WHERE Orders.ShipperID=Shippers.ShipperID 
GROUP BY ShipperName 

ARRAY_AGG返回一個數組,但你可以強制轉換爲需要的文本和編輯(見澄清,下同)。

到8.4版本之前,你必須定義它自己使用前:

CREATE AGGREGATE array_agg (anyelement) 
(
sfunc = array_append, 
stype = anyarray, 
initcond = '{}' 
); 

或簡單:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders , string_agg(Orders.OrderID, ',') as which_are_those FROM Orders 
WHERE Orders.ShipperID=Shippers.ShipperID 
GROUP BY ShipperName 
+0

上述聲明拋出如下所示的錯誤「未定義功能「GROUP_CONCAT '在表達中。「 – chaitu

+0

我沒有看到,這是PostgreSQL的,編輯我的答案 –