正在尝试列出具有此属性列出的公用属性的所有记录

问题描述:

尝试为下表编写查询时,我迷路了。乘客可以选择不同类型的水果,我想列出每种水果,谁选择了这种水果的乘客。正在尝试列出具有此属性列出的公用属性的所有记录

pax fruit 
1 apple 
1 pear 
2 mango 
3 apple 
4 mango 
4 pear 

输出:

apple 1 3 
pear 1 4 
mango 2 4 

与SQL的问题是,查询有一个固定的一组列。所以,如果你只有两个成果,那么这是可能的 - 你知道结果集有三列。但是,要推广到更多列,您需要使用动态SQL。

select fruit, 
     max(case when seqnum = 1 then pax end) as col1, 
     max(case when seqnum = 2 then pax end) as col2 
from (select pax, fruit, 
      row_number() over (partition by fruit order by (select null)) as seqnum 
     from table t 
    ) t 
group by fruit;