There is a a parsed table table_1
:
|id | parent_id | name | value |
+---+-----------+---------+-------+
| 1 | 0 | NumDoc | 63 |
| 2 | 0 | Groups | null |
| 4 | 3 | Group | ALM |
| 5 | 3 | Vals | null |
| 7 | 6 | ValCode | USD |
|10 | 9 | ValCode | CHF |
|11 | 3 | Group | TLD |
|12 | 3 | Vals | null |
|14 | 13 | ValCode | USD |
|17 | 16 | ValCode | RUB |
I am expecting a result like this:
| Numdoc | Group | Valcode |
+--------+------+----------+
| 63 | ALM | USD |
| 63 | ALM | CHF |
| 63 | TLD | USD |
| 63 | TLD | RUB |
My sql select query:
with t as( select * from(
select (case when c.name='NumDoc' then c.Value end) NumDoc,
(case when c.name='Group' then c.Value end) as Group,
(case when c.name='ValCode' then c.Value end) as ValCode,
rownum as rn
from table_1 c))
select NumDoc,
min(Group),
min(ValCode)
from(select t.*, row_number() over (partition by NumDoc, rn order by rn) as seqnum
from t) T
group by NumDoc,seqnum,Group, ValCode
Result select:
| Numdoc | Group | Valcode |
+--------+-------+---------+
| null | null | null |
| null | null | CHF |
| null | null | RUB |
| null | null | USD |
| null | ALM | null |
| null | TLD | null |
| 63 | null | null |