DB2SQL:组合两个查询并选择一个聚合列的最大值

DB2SQL:组合两个查询并选择一个聚合列的最大值,sql,db2,Sql,Db2,我有两个问题(示例版本)- 查询A: select col1 as COL1, col2 as COL2, sum(col3) as COL3 from table1 join table11 .. group by col1, col2; 问题B: select col1 as COL1, col2 as COL2, count(col3) as COL3 from table2 group by col1, col2; 我想加入他们两个,并有如下输出。试过这个

我有两个问题(示例版本)-

查询A:

select 
  col1 as COL1,
  col2 as COL2,
  sum(col3) as COL3
from table1 join table11 ..
group by col1, col2;
问题B:

select 
  col1 as COL1,
  col2 as COL2,
  count(col3) as COL3
from table2
group by col1, col2;
我想加入他们两个,并有如下输出。试过这个

select A.COL1, A.COL2, greatest(A.COL3, B.COL3)
from (query A) A
UNION (query B) B
但是得到了错误

SQL0104N在“col2)B”之后发现意外标记“语句结束”。
预期标记可能包括:“加入”。
SQLSTATE=42601

这两个查询各自运行良好,但当使用上面的UNION组合时,会出现错误

有没有更好的方法来实现这一点?

看起来您需要的是加入,而不是联合:

根据您的需要,您可能需要
左连接
右连接
完全外部连接
而不是内部
连接

看起来您需要的是连接,而不是联合:

 with A as  
 (
 select 
 col1 as COL1,
 col2 as COL2,
 sum(col3) as COL3
 from table1 join table11 ..
 group by col1, col2
 ),
 B as
 (
 select 
 col1 as COL1,
 col2 as COL2,
 count(col3) as COL3
 from table2
 group by col1, col2
 ) 

 select ifnull(A.COL1, B.COL1) as COL1, ifnull(A.COL2, B.COL2) as COL2,
 greatest(ifnull(A.COL3, 0), ifnull(B.COL3, 0)) as great
 from A full outer join B on A.COL1 = B.COL1 and A.COL2 = B.COL2

根据您的需要,您可能需要
左连接
右连接
完全外部连接
,而不是内部
连接

这不是union所做的。。。。你想要加入。这不是工会的职责。。。。你想加入。
 with A as  
 (
 select 
 col1 as COL1,
 col2 as COL2,
 sum(col3) as COL3
 from table1 join table11 ..
 group by col1, col2
 ),
 B as
 (
 select 
 col1 as COL1,
 col2 as COL2,
 count(col3) as COL3
 from table2
 group by col1, col2
 ) 

 select ifnull(A.COL1, B.COL1) as COL1, ifnull(A.COL2, B.COL2) as COL2,
 greatest(ifnull(A.COL3, 0), ifnull(B.COL3, 0)) as great
 from A full outer join B on A.COL1 = B.COL1 and A.COL2 = B.COL2