oracle9i数据库,通过pl/sql操作,现有一表WW,有K,a,b,c,d五个字段,3000到4000左右条记录,欲求甲,乙2个结果,要对所有记录执行如下操作:
如果K=1,
一:若(a-b)-c>=0,甲=b,乙=c;
二:若(a-b)-c<0,甲=b,乙=a-b;
如果K=0,
一:若(a-b)-d>=0,甲=b+d,乙=0;
二:若(a-b)-d<0,甲=a,乙=0;最后,对甲和乙的结果分别累加,输出甲和乙的结果,具体的SQL语句该怎么写呢??
如果K=1,
一:若(a-b)-c>=0,甲=b,乙=c;
二:若(a-b)-c<0,甲=b,乙=a-b;
如果K=0,
一:若(a-b)-d>=0,甲=b+d,乙=0;
二:若(a-b)-d<0,甲=a,乙=0;最后,对甲和乙的结果分别累加,输出甲和乙的结果,具体的SQL语句该怎么写呢??
解决方案 »
- AIX-oracle10g-双机热备
- ORACLE触发器中rollback后有没有方法往别表插入数据
- 求1条SQL 语句 再开一贴 求ORACLE写法
- oracle左连接查询为什么会丢记录?详见内容
- 菜鸟问题六:(几个小问题)-------------
- 雪地里跪求关于oracle方面的好书
- 在Oracle里, 有什么Store procedure可以附加数据库么
- Oracle 连接问题 在线等待 急!!!!!!!!!解决马上给分
- 我想给有一百万篇文章的表做个标题搜索,如何做一个低开销的搜索服务呢?
- 我有一个表,里面的某些记录的指定字段上含有‘%’,而某些记录的指定字段上含有‘_’,怎样用select like语句选出这些记录?
- ORACLE 存储过程返回记录的问题?
- 在线等救急!一个有难度的视图,高手帮忙看看!
WHEN (a - b) - d >= 0
THEN b + d
ELSE a
END)) 甲合计,
SUM (DECODE (k, 0, 0, CASE
WHEN (a - b) - c >= 0
THEN c
ELSE a - v
END)) 乙合计
FROM ww
from (select case
when k = 1 then
b
when (k = 0 and a - b - d > 0) then
b + d
when (k = 0 and a - b - d < 0) then
a
end 甲 ,
case
when k = 0 then
0
when (k = 1 and a - b - c > 0) then
c
when (k = 1 and a - b - c < 0) then
a - b
end 乙
from ww)
也就是说,输出的结果是sum(甲),sum(乙),sum(a),恳求具体的SQL语句,不胜感激!!
(
SELECT k,decode(k,1,decode(sign((a-b)-c),-1,a-b,c),
0,0) yi FROM ww) a,
(
SELECT k,decode(k,1,b,
0,decode(sign((a-b)-d),-1,a,b + d)) jia FROM ww )b
WHERE a.k = b.k