Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当连接两个表中的聚合时,如何避免笛卡尔积?_Sql_Oracle - Fatal编程技术网

Sql 当连接两个表中的聚合时,如何避免笛卡尔积?

Sql 当连接两个表中的聚合时,如何避免笛卡尔积?,sql,oracle,Sql,Oracle,我需要连接两个表中的聚合,但得到的是笛卡尔积。我怎样才能避免呢 SELECT TO_CHAR(c.date, 'YYYY-MM') AS "Year-Month", SUM(c.amount) as c_amount, SUM(o.amount) as o_amount FROM c JOIN o ON c.common = o.common AND c.date = o.date GROUP BY TO_CHAR(c.date, 'YYYY-MM') ORDER

我需要连接两个表中的聚合,但得到的是笛卡尔积。我怎样才能避免呢

SELECT TO_CHAR(c.date, 'YYYY-MM') AS "Year-Month",
   SUM(c.amount) as c_amount,
   SUM(o.amount) as o_amount
FROM c JOIN o ON c.common = o.common AND c.date = o.date
GROUP BY TO_CHAR(c.date, 'YYYY-MM')
ORDER BY TO_CHAR(c.date, 'YYYY-MM');
预骨料:

select c.yyyymm, c.c_amount, o.o_amount
from (select to_char(c.date, 'YYYY-MM') as yyyymm,
             sum(c.amount) as c_amount
      from c
      group by to_char(c.date, 'YYYY-MM')
     ) c left join
     (select to_char(c.date, 'YYYY-MM') as yyyymm,
             sum(o.amount) as o_amount
      from c join
           o
           on c.common = o.common
      group by to_char(c.date, 'YYYY-MM')
     ) o
     on c.yyyymm = o.yyyymm;

请提供样本数据和期望的结果。这很有效!非常感谢。你会推荐什么资源来学习这些技巧?@oavaldezi。这相当棘手。您可能只需要使用数据方面的实践和经验。