我希望显示属于group by sql语句一部分的聚合列的内容。示例:
SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
WHERE Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName在上面的例子中,输出给我的结果之一是计数,而我需要的是聚合的orders.orderID实际值。假设一个结果计数显示为2,我需要知道这两个分组的值是什么。此结果应作为同一表中的另一列。
发布于 2013-07-19 17:18:59
在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 ShipperNamearray_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 ShipperNamehttps://stackoverflow.com/questions/17742343
复制相似问题