我有一个相对没用的问题。我这么说是因为我觉得我只是错过了这里显而易见的东西。我只是做了很多人以前做过和问过的事情,但我以前使用的典型方法是行不通的。希望只是我遗漏了一些简单的东西。
下面是我正在处理的一个更大的查询的一部分,但我只是尝试将两行(只有一列不同的数据)合并为一行(有一个分隔符分隔的类似列)。使用CONCAT或STRING-AGG就够简单了吧?……好的对我不起作用,我也不知道为什么。
SELECT array_to_string(array_agg(ls_number), ',') "ls_number",
--Also tried CONCAT(ls_number, ',') and string_agg(ls_number, ',')
--and they don't work
shipitem_shiphead_id,
shipitem_orderitem_id,
shiphead_number
FROM shipitem
LEFT JOIN invhist
ON (shipitem_invhist_id=invhist_id)
LEFT JOIN invdetail
ON (invhist_id=invdetail_invhist_id)
LEFT JOIN ls
ON (invdetail_ls_id=ls_id)
LEFT JOIN shiphead
ON (shiphead_id = shipitem_shiphead_id)
WHERE shiphead_number = '72211'
GROUP BY ls_number,
shiphead_number,
shipitem_shiphead_id,
shipitem_orderitem_id
运行上述查询时的结果:
从上面的结果窗口可以看到,批号被分成两行。我需要它们在一行,批号用分隔符“,”分隔。有人能解释一下我遗漏了什么吗?提前谢谢你!
最佳答案
您的ls_number
子句中有group by
,这意味着您将为结果中每个不同的值获得不同的行。从group by
子句中删除它,您就应该没事了。
关于postgresql - 将多个返回的行合并为一行(由于某些原因,标准方法无效),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38777246/