Oracle将2行合并到列中

时间:2012-04-13 14:47:08

标签: sql oracle


需要帮助才能将2行显示为合并列
制作这张图片来说明问题 谢谢您的帮助 enter image description here

2 个答案:

答案 0 :(得分:3)

如果您只需要2个城市,那么简单的可能就是使用分析函数:

select distinct studentname
     , min(city) over ( partition by studentname ) as city1
     , min(street1) over ( partition by studentname ) as street1
     , case when min(city) over ( partition by studentname ) 
                  <> nvl( max(city) over ( partition by studentname ), 'x')
              then max(city) over ( partition by studentname ) end as city2
     , case when min(street) over ( partition by studentname ) 
                  <> nvl( max(street) over ( partition by studentname ), 'x')
              then max(street) over ( partition by studentname ) end as street2
  from my_table

虽然我必须补充一点,你可能不应该这样做。如果学生有3个地址会怎样?

答案 1 :(得分:2)

我认为你正在考虑的方式并不正确。

您应该为“Ted”返回2行,并使用您的视图/报告代码操作输出。如果您的需求发生变化,这将变得更加容易,并且可以让您更快地更改您的视图/报告。