decode的问题

FrancescoLongo 2006-08-29 10:05:22
当为001、002、003时,求值。
sum(decode (if_feeinfo.fee_code , '001' in '002' in '003',if_feeinfo.tot_cost,0 ))as ypfee。
上面这句话肯定有问题,小弟就是不清楚当为001、002、003时,用语句如何表示。
谢谢
...全文
299 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng2 2006-08-29
  • 打赏
  • 举报
回复
xiaoxiao1984(笨猫儿^_^)

使用函数decode()和in()
RobinHZ 2006-08-29
  • 打赏
  • 举报
回复
sum(decode(if_feeinfo.fee_code,'001',if_feeinfo.tot_cost,'002',if_feeinfo.tot_cost,'003',if_feeinfo.tot_cost,0)) as ypfee
你是这个意思么?
gw_delphi 2006-08-29
  • 打赏
  • 举报
回复
你说的求值啥意思.求和?不知道是不是你想要的
1. sum(decode(fee_code,'001',fee_code,'002',fee_code,'003',fee_code,0)) as ypfee

2. where fee_code in('001','002','003')
xiaoxiao1984 2006-08-29
  • 打赏
  • 举报
回复

1. sum( case when fee_code in ('001','002','003') then A
else D
end ) as ypfee

2. sum(decode(fee_code,'001',A,'002',A,'003',A,D)) as ypfee
FrancescoLongo 2006-08-29
  • 打赏
  • 举报
回复
可能是小弟没有表达清楚。
当为001或为002或为003时,求if_feeinfo.tot_cost的值。
不好意思
xiaoxiao1984 2006-08-29
  • 打赏
  • 举报
回复
1. sum( case fee_code when '001' then A -- fee_code = '001'则A语句处理
when '002' then B
when '003' then C
else D
end ) as ypfee

2. sum(decode(fee_code,'001',A,'002',B,'003',C,D)) as ypfee
gechangwei 2006-08-29
  • 打赏
  • 举报
回复
方法1:
sum(decode(if_feeinfo.fee_code , '001',if_feeinfo.tot_cost, '002' ,if_feeinfo.tot_cost,'003',if_feeinfo.tot_cost,0 )) as ypfee

方法2:
select sum(case when if_feeinfo.fee_code in ('001','002','002') then if_feeinfo.tot_cost else 0 end case) as ypfee

方法3:
select sum(decode(decode(if_feeinfo.fee_code,'001',1,'002',1,'003',1,0),1,if_feeinfo.tot_cost,0)) as ypfee

FrancescoLongo 2006-08-29
  • 打赏
  • 举报
回复
恩,当为001或为002或为003,求if_feeinfo.tot_cost的和。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧