我有一个相对无聊的问题。我之所以这么说是因为我觉得我只是错过了这里显而易见的。我只是做了许多人已经做过的事情,并且之前已经问过,但我之前使用的典型方法都不起作用。希望这只是我错过了一些简单的东西。
下面是我正在处理的更大查询的一部分,但我只是尝试将两行只有一列不同的数据组合成一行,其中相似的列用分隔符分隔。对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
运行上述查询时的结果:
您可以从上面的结果窗口中看到批号被分成2行。我需要它们在一行上,批号由分隔符','分隔。有人可以解释我在这里缺少的东西吗?提前一堆谢谢!
答案 0 :(得分:0)
您的ls_number
子句中有group by
,这意味着您会在结果中为其中的每个不同值获取不同的行。从group by
子句中删除它,你应该没问题。