当表有多行与其他表中的单个记录相关时,如何显示一行?

时间:2018-04-21 22:58:33

标签: sql oracle

SQL小提琴:http://sqlfiddle.com/#!4/86e60/1

我的数据如下:

enter image description here

并尝试生成如下输出:

enter image description here

SQL中是否有任何函数可以解决这种用例?我不是在寻找完整的答案。我只是在寻找要搜索的内容或者有关如何解决这个问题的任何指针都会很棒。

注意:我查看了类似的帖子,但找不到任何与此相近的内容。

2 个答案:

答案 0 :(得分:2)

pivot版本将是:

select * from (
   select apartment_id, feature_name, feature_value
   from   apartment_feature
)
pivot (
   max(feature_value)
   for feature_name in
       ( 'BedRooms' as bedrooms, 'BathRooms' as bathrooms, 'Flooring' as flooring )
)
order by apartment_id;

max(feature_value)是因为pivot语法需要聚合表达式。也许如果feature_value是一个数字列,那么sum(feature_value)会更有意义。

答案 1 :(得分:1)

我会使用条件聚合来做到这一点:

file_url