在Oracle中,我进行了一个查询。是对金额的统计 用的是 SUM函数。可是现在需求变了。 30

当表中的一个字段flag的值为2时,金额则是负数(表中金额都是正数)。这样的查询,或者说是存储过程要怎么写啊?... 当表中的一个字段flag的值为2时,金额则是负数(表中金额都是正数)。这样的查询,或者说是存储过程要怎么写啊? 展开
 我来答
虔诚且清冽灬雏菊8582
2012-12-03 · TA获得超过342个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:148万
展开全部
嗯?在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;
把萝卜做成咸菜
2012-12-03 · TA获得超过1026个赞
知道大有可为答主
回答量:1741
采纳率:40%
帮助的人:1587万
展开全部
我没试过,一般这种情况需要分步统计求和,然后再外部执行减操作,用编程的方法实现
追问
讲讲怎么分步统计?我要求在数据库端就要已经实现。不需要经过java后台 用存储过程可以实现吧?可惜不怎么熟悉啊
追答
嗯,之前确实用过存储过程完成过类似的东西,存储过程即是编程,可以多步实现SQL语句,如想在数据库端实现确实是上上之选,关于存储过程怎么建立你还是自己查吧,大致步骤可如下:
1、求出flag字段为2的统计金额;
2、求出flag字段非2的统计金额;
3、两项相减,作为返回值返回。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tingshuo3200
2012-12-04 · 超过12用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:32.8万
展开全部
DECODE 这个函数 或用case when 语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式