在Oracle中,我进行了一个查询。是对金额的统计 用的是 SUM函数。可是现在需求变了。 30
当表中的一个字段flag的值为2时,金额则是负数(表中金额都是正数)。这样的查询,或者说是存储过程要怎么写啊?...
当表中的一个字段flag的值为2时,金额则是负数(表中金额都是正数)。这样的查询,或者说是存储过程要怎么写啊?
展开
3个回答
展开全部
嗯?在ORACLE里面这种查询很简单啊,用case when语句判断一下就可以了。
select case when flag = 1 then sum(金额) when flag = 2 then sum(-金额) end from 表;
还可以group by,比如:
select 用户,flag,case when flag = 1 then sum(金额) when flag = 2 then sum(-金额) 金额 end from 表 group by 用户,flag;
select case when flag = 1 then sum(金额) when flag = 2 then sum(-金额) end from 表;
还可以group by,比如:
select 用户,flag,case when flag = 1 then sum(金额) when flag = 2 then sum(-金额) 金额 end from 表 group by 用户,flag;
展开全部
我没试过,一般这种情况需要分步统计求和,然后再外部执行减操作,用编程的方法实现
追问
讲讲怎么分步统计?我要求在数据库端就要已经实现。不需要经过java后台 用存储过程可以实现吧?可惜不怎么熟悉啊
追答
嗯,之前确实用过存储过程完成过类似的东西,存储过程即是编程,可以多步实现SQL语句,如想在数据库端实现确实是上上之选,关于存储过程怎么建立你还是自己查吧,大致步骤可如下:
1、求出flag字段为2的统计金额;
2、求出flag字段非2的统计金额;
3、两项相减,作为返回值返回。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DECODE 这个函数 或用case when 语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询