Oracle中的SQL查询语句:包含表一所有数据,根据表二中的某一字段的不同条件分别求另一字段的和。

表一内容:id部门1a2b3c4d表二内容:id部门分值正负1a1Y2b2N3c5Y4a4N5a3Y6b6N7c3Y想实现的查询结果部门正分负分a44b08c80d00根... 表一内容:
id 部门
1 a
2 b
3 c
4 d
表二内容:
id 部门 分值 正负
1 a 1 Y
2 b 2 N
3 c 5 Y
4 a 4 N
5 a 3 Y
6 b 6 N
7 c 3 Y
想实现的查询结果

部门 正分 负分
a 4 4
b 0 8
c 8 0
d 0 0

根据表中,按部门group by 分别求同一部门“正负”字段等于“Y”和等于“N”的分值和。并列出表一中的所有部门。
求教各位SQL/plus查询语句,谢谢了先!
展开
 我来答
法曼岚4
2013-04-11 · 超过15用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:32.1万
展开全部
sleect a.部门,
sum(case when b.正负 = 'Y' then b.分值 else 0 end) 正分,

sum(case when b.正负 = 'N' then b.分值 else 0 end) 负分

from table1 a,
table2 b
where a.id = b.id(+)
group by a.部门
右关联就好了,你试下,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在生态园踏青的葵花子
2013-04-11 · TA获得超过199个赞
知道小有建树答主
回答量:213
采纳率:100%
帮助的人:123万
展开全部
with t1 as
(select 部门, sum(分值) as 正分
from 表二
where 正负="Y"
group by 部门) ,
t2 as
(select 部门, sum(分值) as 负分
from 表二
where 正负="N"
group by 部门)

select 表一.部门, t1.正分, t2.负分
from 表一
left join t1
on 表一.部门=t1.部门
inner join t2
on t1.部门=t2.部门

刚才忘记表一,修改了一下。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情又独中
2013-04-11 · TA获得超过1032个赞
知道小有建树答主
回答量:1220
采纳率:100%
帮助的人:826万
展开全部
select t1.*,t2.正分,t2.负分 from 表一 t1,
(select 部门,sum(decode(正负,Y,分值,0)) as 正分,sum(decode(正负,N,分值,0)) as 负分
from 表二 group by 部门) t2 where t1.部门=t2.部门
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式