I have 2 sql data set:
Data set 1:
select * from (
Select 1 rn, 'b' c, 3 Val from dual UNION ALL
Select 1 rn, 'r' c, 3 Val from dual UNION ALL
Select 1 rn, 'w' c, 3 Val from dual UNION ALL
Select 2 rn, 'b' c, 2 Val from dual UNION ALL
Select 2 rn, 'r' c, 2 Val from dual UNION ALL
Select 3 rn, 'b' c, 1 Val from dual
) t1
Data set 2:
select * from (
Select 'b' c from dual UNION ALL
Select 'r' c from dual UNION ALL
Select 'w' c from dual ) t2
I need to get following data set:
rn c val
1 b 3
1 r 3
1 w 3
2 b 2
2 r 2
2 w null
3 b 1
3 r null
3 w null
I tried do this with the following sql, but it doesn't work.
select t1.*, t2.*
FROM (
Select 1 rn, 'b' c, 3 Val from dual UNION ALL
Select 1 rn, 'r' c, 3 Val from dual UNION ALL
Select 1 rn, 'w' c, 3 Val from dual UNION ALL
Select 2 rn, 'b' c, 2 Val from dual UNION ALL
Select 2 rn, 'r' c, 2 Val from dual UNION ALL
Select 3 rn, 'b' c, 1 Val from dual
) t1 right join (
Select 'b' c from dual UNION ALL
Select 'r' c from dual UNION ALL
Select 'w' c from dual ) t2 on t1.c=t2.c
order by 1,2
Please, help me fix my query. I use Oracle database.