oracle - SQL Custom selection -
oracle - SQL Custom selection -
i want write sql gives next result. possible? tried union works 1 record.
col1 | col2 | col3 | col4 --------------------------- | 10 | | | 2 | val1 | val2 | 5 | val3 | val4 | 3 | val5 | val6 b | 11 | | | 3 | val7 | val8 | 5 | val9 | val10 | 3 | val0 | val12here query :
select a.val1, null val2, a.val3 table1 a.val1 = 'a' union select null val1, b.val2, b.val3 table2 b b.val1 = 'a' ;
maybe create question more clear.
imagine if run query:
select a.val1, null val2, a.val3 table1 union select null val1, b.val2, b.val3 table2 b ;
i want result set figure above.
col1 | col2 | col3 | col4 --------------------------- | 10 | | | 2 | val1 | val2 | 5 | val3 | val4 | 3 | val5 | val6 b | 11 | | | 3 | val7 | val8 | 5 | val9 | val10 | 3 | val0 | val12
either rollup or regular grouping can this, still haven't accounted col2
. did come from, in sql snippets, don't have @ all.
sql> create table yourtab(col1, col2, col3, col4) 2 3 select 'a', 2, 'val1', 'val2' dual 4 union select 'a', 5, 'val3', 'val4' dual 5 union select 'a', 3, 'val5', 'val6' dual 6 union select 'b', 3, 'val7', 'val8' dual 7 union select 'b', 5, 'val9', 'val10' dual 8 union select 'b', 3, 'val11', 'val12' dual; table created. sql> sql> select col1, sum(col2) col2, col3, col4 2 yourtab 3 grouping col1, rollup(col3, col4) 4 having (grouping_id(col3), grouping_id(col4)) in ((0,0),(1,1)) 5 order col1, grouping_id(col3) desc; c col2 col3 col4 - ---------- ----- ----- 10 5 val3 val4 3 val5 val6 2 val1 val2 b 11 b 3 val7 val8 b 5 val9 val10 b 3 val11 val12 8 rows selected. sql> sql> select col1, col2, col3, col4 2 (select col1, col2, col3, col4, 2 grp 3 yourtab 4 union 5 select col1, sum(col2), null, null, 1 grp 6 yourtab 7 grouping col1) 8 order col1, grp; c col2 col3 col4 - ---------- ----- ----- 10 5 val3 val4 3 val5 val6 2 val1 val2 b 11 b 3 val11 val12 b 5 val9 val10 b 3 val7 val8 8 rows selected.
sql oracle
Comments
Post a Comment