2013-12-10 4 views
3
select col1,col2,col3 from tab1 union all 
select col1,col2,col3 from tab2 

о/рOracle SQL Developer Output форматированием

COL1  COL2  COL3 
6518 10060152650 534010002 
6518 10060152651 534010002 
6518 10060152652 534020003 
6526 10060153296 534004002 
6526 10060153310 534004542 
6526 10060153365 533011103 
6526 10060153328 534010002 
6526 10060153348 534010002 

Я хочу, чтобы это как этот

COL1 COL2   COL3 
6518 10060152650 534010002  
     10060152651 534010002  
     10060152652 534020003  
6526 10060153296 534004002  
     10060153310 534004542  
     10060153365 533011103  
     10060153328 534010002  
     10060153348 534010002 

может любой помочь мне .. !!

+0

Небольшое усилие в форматировании имеет большое значение в получении быстрых ответов. – Adarsh

ответ

5

Разработчик SQL показывает вам выбранные строки. Поскольку ваши строки содержат значение в Col1, это будет показано. Таким образом, ваше единственное решение - не выбирать его или в вашем примере: не выбирать его, когда строка до этого содержит уже такое же значение. Не забывайте сортировать.

select 
    case when col1 = lag(col1) over (order by col1, col2, col3) then 
    null 
    else 
    col1 
    end as colx 
, col2 
, col3 
from 
(
    select col1,col2,col3 from tab1 union all 
    select col1,col2,col3 from tab2 
) 
order by col1, col2, col3 
+0

Спасибо Throsten, это именно то, что я ищу .... :-) – imtiyaz283

+1

Кажется не работает: проверьте http://sqlfiddle.com/#!4/02c4d/1 – Trinimon

+1

А, спасибо, что указали это , Это потому, что я использовал col1 как псевдоним и порядок, работая над этим альясом, а не с исходным полем. (Я думаю, что это было по-другому в Ora 10g.) Я исправляю это. Вот измененная скрипт SQL: http://sqlfiddle.com/#!4/02c4d/11 –

2

Это будет работать для вас:

SELECT CASE 
      WHEN RANK() OVER (PARTITION BY col1 ORDER BY col2) <> 1 
      THEN '' 
      ELSE TO_CHAR(col1) 
     END AS col1, 
    col2, 
    col3 
FROM (
    SELECT col1, col2, col3 
    FROM tab1 

    UNION ALL 

    SELECT col1, col2, col3 
    FROM tab2 
    ) 

Вот SQLFiddle с тем, как работает запрос.

0

sql * plus имеет команды компоновки отчетов. SQLDeveloper отображает сетку данных.

SQL>break on col1 nodup 
SQL>select col1,col2,col3 from tab1 union all select col1,col2,col3 from tab2; 
Смежные вопросы