Jak zgrupować jednocześnie wiersze i kolumny?

0

Mam taką sytuację:
http://sqlfiddle.com/#!4/e8178d/1

KLN_NAZWA to część wspólna natomiast gdy uzupełniony jest TID_KRAJOWY to TID_ZAGRANICZNY będzie nullem i na odwrót. Chciałbym uzyskać select który zwróci mi KLN_NAZWA i pola TID_KRAJOWY i TID_ZAGRANICZNY jako not null. W przypadku z sqlfiddle powinny być dwa rekordu bez nulli w obu kolumnach i jeden dla sytuacji nieparzystej gdzie ma być null. Da się coś takiego zrobić na oracle 12?

wołam @Marcin.Miga @abrakadaber

0

Może wypisz jak powinien wyglądać oczekiwany wynik, bo z opisu jakoś nie mogę tego sobie wyobrazić....

0

Czy chodzi o coś takiego? http://sqlfiddle.com/#!4/e8178d/67

select nvl(k.kln_nazwa,  z.kln_nazwa) as kln_nazwa, k.tid_krajowy, z.tid_zagraniczny from 
  (select rownum as rn, kln_nazwa, tid_krajowy from aaa_test1 where tid_krajowy is not null) k
full outer join 
  (select rownum as rn,  kln_nazwa, tid_zagraniczny from aaa_test1 where tid_zagraniczny is not null) z
on k.kln_nazwa = z.kln_nazwa and k.rn = z.rn

Edit: dodałem link do sqlfiddle

0

http://sqlfiddle.com/#!4/e8178d/70

WITH t1
AS (SELECT ROW_NUMBER() OVER (ORDER BY TID_KRAJOWY) rn,
           KLN_NAZWA,
           TID_KRAJOWY
    FROM AAA_TEST1
    WHERE TID_KRAJOWY IS NOT NULL),
   t2
AS (SELECT ROW_NUMBER() OVER (ORDER BY TID_ZAGRANICZNY) rn,
           KLN_NAZWA,
           TID_ZAGRANICZNY
    FROM AAA_TEST1
    WHERE TID_ZAGRANICZNY IS NOT NULL)
select coalesce(t1.kln_nazwa,  t2.kln_nazwa) KLN_NAZWA,
       t1.TID_KRAJOWY,
       t2.TID_ZAGRANICZNY from t1
full join t2
on t1.rn = t2.rn
and t1.KLN_NAZWA= t2.KLN_NAZWA
0

jeśli wynikiem mają być 3 (słownie TRZY) rekordy to zadanie to jest, wg mnie, bez sensu i tyle. Owszem @ipsd podał zapytanie, które taki wynik zwróci ale, jak już pisałem, bez sensu albo co najmniej bardzo dziwne wymaganie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0