我在尝试为下表编写查询时迷路了。乘客可以选择不同类型的水果,我想列出每种水果,选择这种水果的乘客。
pax fruit
1 apple
1 pear
2 mango
3 apple
4 mango
4 pear
输出:
apple 1 3
pear 1 4
mango 2 4
答案 0 :(得分:0)
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;