我有2个SQL,结果很好。它们与这两个查询之间没有关系,但我希望看到单列中的所有行。
e.g。
Select col1,col2,sum(col3) as col3 from table a
select col4,col5 from table b
我希望结果是
col1 col2 col3 col4 col5
如果表a或表b没有等效行,则用零替换。
有人可以帮我解决这个问题。感谢。
答案 0 :(得分:0)
因为,您没有在每个表中提供表结构或数据等任何信息。你可以cross join
两个表。
select t.col1,t.col2,t.col3,t1.col1,t1.col2 from tab1 t,tab2 t1;
<强> SQLFiddle 强>
答案 1 :(得分:0)
在两个select语句中,根据rownum
或row_number()
添加列,然后使用此列添加full join
结果:
select nvl(col1, 0) col1, nvl(col2, 0) col2, nvl(col3, 0) col3,
nvl(col4, 0) col4, nvl(col5, 0) col5
from
(select rownum rn, col1, col2, col3 from (
select col1, col2, sum(col3) col3 from tableA group by col1, col2)) a
full join (select rownum rn, col4, col5 from tableB) b using (rn)
答案 2 :(得分:0)
我认为UNION
可能是一个实用的解决方案,因为2个查询不相关。它们只是2个数据集,应该在一个语句中检索:
Select col1,col2,sum(col3) as col3 from table a
UNION
select col4,col5, to_number(null) col6 from table b
请注意示例中的col6。 SQL
坚持在UNION
语句中检索相等的列。检索具有完全相同datatype
的列是一种很好的做法。由于sum(col3)将产生number datatype
列,col6也应该。
col4和col5的结果将显示在col1和col2中。