select sum(case when num10 then 0 else num1 end)+sum(case when num20 then 0 else num2 end) as 负值总和 from 表名
内黄网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
1,1,-3 若是求和为 -1,就使用 sum()
1,1,-3 若是求和为 5,就使用 sum(abs())
select * from A where to_char(日期字段,'yyyymm')=to_char(add_months(sysdate,-1),'yyyymm')
这样试验一下,表名和字段名你替换一下,也就是把A和日期字段这俩地方换一下
也不用创建啊,有个函数叫sign
用法:
select sign(数值) from dual
大于0返回1,等于0返回0,小于0返回-1
你说的那个
select * from count where sign(num1)=1
得出来的就是为正数的了
---补充--
create or replace FUNCTION NUM(v_num number)
return int is
Result int;
begin
if(v_num 0) then
Result := -1;
end if;
if(v_num = 0) then
Result := 0;
end if;
if(v_num 0) then
Result := 1;
end if;
return(Result);
end num;
用法与sign一致
如select num(100) from dual;