以前一个帖子的新问题!!!--老问题:
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; 最后,对甲和乙的结果分别累加,输出甲和乙的结果, 如果现在还想求sum(a)的值呢??sum(a)只要直接求就可以了不要加这些判断条件,
也就是说,输出的结果是sum(甲),sum(乙),sum(a),恳求具体的SQL语句,不胜感激!!当时回帖:select sum(甲) , sum(乙) 乙,sum(a)
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 乙,a
from ww) 这样解决基本没问题.--新问题:问题逐步升级了,又添了张表YY,字段m,n,原WW表再添个字段m,YY.m和WW.m是关联的,
保留原来的查询结果不变,还要增加YY.m=WW.m时表YY中n字段的查询结果,也就是说,最终的查询
结果输出的应该是:YY.n,sum(甲),sum(乙),sum(a),求具体的SQL语句!!!始终没有回音ing
这种难度的题目只以是刚入门
我只是想知道答案,这和小不小看csdn的人有关系吗??
那你满足条件的YY.n是不是也就一个值。还是多个值?
是一个值,YY.m和YY.n在YY表里都是唯一值
感谢你再提示一下呢
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 乙,a
from ww,yy where YY.m=WW.m)
from (select yy.n,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 乙,a
from ww,yy
where www.m=yy.m)
linzhangs的语句执行不了,始终提示"YY"."n":invalid identifier,我看了一下:
select sum(甲),sum(乙)乙,sum(a),yy.n from (...),后面括号中根本没有任何对应前面select语句中yy.n的查询信息,
看语句应该就是查不出yy.n的,linzhangs兄可以再看一下. hebo2005兄的语句能执行,但有点小问题,就是缺个group by,还有over()好象根本没作用啊.
我把我最终的语句贴出来:
select n,sum(甲), sum(乙),sum(a)
from (select yy.n,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 乙,
a
from ww,yy
where www.m=yy.m)
group by n这样显示出来的就完全是我想要的结果了,无比感谢两位!!