首页 > 解决方案 > 按特定年份对列中的所有 - / + 值求和

问题描述

我加入了 2 张桌子。一个表包含所有值(+/- 数量),另一个表主要包含维度数据。加入后,我想运行一个查询来计算给定特定年份的所有负值和正值的总和。

问题似乎发生在第三行。有什么想法吗?

select sum(sales_amount)
from salesInfo s inner joint dimInfo d
where sales_amount <0 and year = '2019';

由于第 3 行抛出错误,查询未生成:

错误 - ORA-00905: 缺少关键字 00905。00000 - “缺少关键字”

标签: sqloraclejoin

解决方案


问题可能是由于缺少ONOracle SQL 中的子句,这INNER JOIN与其他数据库方言不同,后者将此类连接视为交叉连接。

或者,您可以使用 OracleNATURAL JOIN连接表之间匹配的命名列:

from salesInfo s natural join dimInfo d

无论哪种方式,您都可以运行条件聚合,甚至按分组:

select year,
       sum(case when sales_amount < 0 then sales_amount end) as negative_sales,
       sum(case when sales_amount > 0 then sales_amount end) as positive_sales
from salesInfo s 
inner join dimInfo d on s.some_id = d.some_id
group by year

Rextester 演示


推荐阅读