我有一个相对没用的问题。我这么说是因为我觉得我只是错过了这里显而易见的东西。我只是做了很多人以前做过和问过的事情,但我以前使用的典型方法是行不通的。希望只是我遗漏了一些简单的东西。
下面是我正在处理的一个更大的查询的一部分,但我只是尝试将两行(只有一列不同的数据)合并为一行(有一个分隔符分隔的类似列)。使用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/

10-15 18:42