這是我的表格,如下所示
p_no type name value
------------------------
1 A Tomy 1
1 A Nick 2
1 B Tomy 3
1 B Nick 4
1 C Tomy 5
1 C Nick 4
2 A Tomy 8
2 A Nick 7
2 B Tomy 5
2 B Nick 4
這意味著每個p_no代表一個塊,該塊記錄兩種A, B, C型別(可能是更多型別)的人的價值。
我想選擇一個他所有型別的價值的人
給定p_no=1, name=Tomy
A B C D
------------------
1 3 5 ..
我試過了
SELECT p_no, t[1] A, t[2] B/*, t[3] C.....*/
FROM (
SELECT p_no, ARRAY_AGG(type) FILTER (WHERE name='Tomy') t
FROM type
GROUP BY 1
ORDER BY 1) _unused
但它不能使 ARRAY_AGG() 包含該值
我想我需要類似的東西 ARRAY_AGG('value' GROUP BY 'type')
這種查詢是可能的還是有更好的選擇?
uj5u.com熱心網友回復:
你的直覺是對的。你想聚合valueorder by type,所以:
select p_no, t[1] as "A", t[2] as "B", t[3] as "C"
from (
select p_no, array_agg(value order by type) as t
from my_table
where name = 'Tomy'
group by p_no
) s
db<>小提琴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468898.html
標籤:sql 数据库 PostgreSQL
