按特定年份汇总一列中的所有-/ +值

时间:2019-02-07 14:55:24

标签: sql oracle join

我已加入2张桌子。一个表具有所有值(+/-量),而另一个表则主要具有尺寸数据。加入后,我想运行一个查询,以汇总给定年份的所有负值和正值。

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

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

由于第3行抛出错误,因此未生成查询。

  

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

3 个答案:

答案 0 :(得分:1)

在JOIN语句之后添加一个ON子句以指定JOIN条件

import numpy as np
df.Med.replace({0:np.nan})

答案 1 :(得分:1)

该问题很可能是由于缺少ON子句而导致的,INNER JOIN在Oracle SQL中不允许使用NATURAL JOIN,这与其他将其联接等同于交叉联接的数据库方言不同。

或者,您可以使用Oracle的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

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

LIBS

Rextester Demo

答案 2 :(得分:0)

只需使用条件聚合:

select sum(case when sales_amount < 0 then sales_amount end) as neg_sum,
       sum(case when sales_amount > 0 then sales_amount end) as pos_sum          
from salesInfo s inner join
     dimInfo d
     on ? = ?  -- whatever your `JOIN` conditions are here
where year = 2019;