這是如何格式化數據:Postgres的查詢返回不止ARRAY_AGG
item_name | item_serial | sub_group | conc_stuff | other_data | more_data
----------+-------------+-----------+------------+------------+-----------
foo bar-01-a widget b-3 towel dent
foo bar-02-a widget a-1 42 mouse
foo bar-03-a widget p-1 babel dolphin
foo3 bar-21-f widget f-1 42 marvin
foo3 bar-22-f widget x-1 poetry vogon
我已經得到執行,我希望它,問題是我需要返回更多的數據的方式查詢。
SELECT item_name,
array_to_string(array_agg(conc_stuff), ',') as stuff
FROM dataset
WHERE some_selector = 'X'
GROUP BY item_name
ORDER BY item_name;
我曾嘗試什麼,似乎簡單而合乎邏輯的對我說:
SELECT item_name,
item_serial,
sub_group,
array_to_string(array_agg(conc_stuff), ',') as stuff
FROM dataset
WHERE some_selector = 'X'
GROUP BY item_name
ORDER BY item_name;
我需要返回的東西,看起來像這樣:
item_name | item_serial | sub_group | stuff
----------+-------------+-----------+-------------
foo bar-01-a widget a-1,b-3,p-1
foo3 bar-21-f widget f-1,x-1,g-5
foo6 bar-81-z widget r-1,d-8,w-0
,而不是僅僅這一點:
item_name | stuff
----------+--------------
foo a-1,b-3,p-1
foo3 f-1,x-1,g-5
foo6 r-1,d-8,w-0
當我嘗試添加廣告時ditional字段添加到查詢,我得到:
ERROR: column "stuff.item_serial" must appear in the GROUP BY clause or be used in an aggregate function
但我不想GROUP BY
item_serial,我只是希望它與骨料被退回,對不對?
我是否需要運行子查詢?我確定這很簡單。如果有多種方法,哪種效率最高?我將連接的一些文本是座標(大文本字符串)。
「item_serial」是唯一的列嗎?如果給定的'item_name'值有多個'item_serial',哪一個應該顯示? –
沒有列,都是基本的。可以有多個item_serials屬於不同的sub_group – roberthuttinger
那麼你想爲特定的'item_name'選擇哪個item_serial(或sub_group)? –