2012-04-13 34 views
1


需要帮助,显示2行作为合并列
制造这一形象来说明问题 谢谢你的帮助 enter image description here甲骨文整合两行成列

+2

你为什么要解除规范你的数据库? – Ben 2012-04-13 14:52:38

+0

谢谢,我需要这个信息的报告,我不改变数据库 – user648026 2012-04-13 15:08:17

+0

是的,我正在使用Oracle(11G rel 2及以上) – user648026 2012-04-13 18:40:35

回答

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个地址会发生什么?

+0

虽然不知何故复杂,它的工作原理,谢谢你, – user648026 2012-04-16 12:48:51

2

我想你想这个方式是不正确的。

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