尝试列出具有此属性列出的公共属性的所有记录

时间:2015-04-02 00:33:43

标签: sql sql-server

我在尝试为下表编写查询时迷路了。乘客可以选择不同类型的水果,我想列出每种水果,选择这种水果的乘客。

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

输出:

apple   1   3
pear    1   4
mango   2   4

1 个答案:

答案 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;