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查询语句,谢谢了先! 展开
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查询语句,谢谢了先! 展开
3个回答
展开全部
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.部门
右关联就好了,你试下,谢谢!
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.部门
右关联就好了,你试下,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.部门
刚才忘记表一,修改了一下。
(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.部门
刚才忘记表一,修改了一下。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select t1.*,t2.正分,t2.负分 from 表一 t1,
(select 部门,sum(decode(正负,Y,分值,0)) as 正分,sum(decode(正负,N,分值,0)) as 负分
from 表二 group by 部门) t2 where t1.部门=t2.部门
(select 部门,sum(decode(正负,Y,分值,0)) as 正分,sum(decode(正负,N,分值,0)) as 负分
from 表二 group by 部门) t2 where t1.部门=t2.部门
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询