有一个这样的需求,怎么写查询语句?

rain9715 2010-11-29 05:46:49
我有一个A表,是工号(userid),姓名(name);
还有一个B表,是工号(userid),剩余天数(countday),类型代码(typecode),类型名称(typename)

B的值现在有,A0001,12,Z01,西瓜
A0002,10,Z02,桔子
A0002,5,Z03,香蕉



现在我想查询出来的是:

工号,姓名,西瓜个数,桔子个数,香蕉个数
A0001,A01,12 ,0 ,0
A0002,A02,0 ,10 ,5

请问这样的查询语句,应该怎么写?在线等,谢谢。
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
picasso124256 2010-11-30
  • 打赏
  • 举报
回复
一边学习,一边帮顶。。
心中的彩虹 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rain9715 的回复:]
其实我A表还是有很多信息的,包括工号,姓名,部门,职位等,
我要的结果是这些基本信息再加个数。

就是工号,姓名,部门,职位。。。。西瓜个数,桔子个数,香蕉个数
这样的情况下,不能group by 所有字段吧?这样的情况应该怎么办?
[/Quote]
select a.*,西瓜个数,桔子个数,香蕉个数
from a,
(select b.userid,sum(decode(b.typecode,'z01',b.countday,0)) 西瓜个数,
sum(decode(b.typecode,'z02',b.countday,0)) 桔子个数,
sum(decode(b.typecode,'z03',b.countday,0)) 香蕉个数
from b
group by b.userid) b
where a.userid=b.userid
zhang98722 2010-11-30
  • 打赏
  • 举报
回复
专业的...
jym2003 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rain9715 的回复:]
其实我A表还是有很多信息的,包括工号,姓名,部门,职位等,
我要的结果是这些基本信息再加个数。

就是工号,姓名,部门,职位。。。。西瓜个数,桔子个数,香蕉个数
这样的情况下,不能group by 所有字段吧?这样的情况应该怎么办?
[/Quote]


SELECT A.工号,A.姓名,A.部门,A.职位...,B.西瓜个数,B.桔子个数,B.香蕉个数

FROM
(select b.userid ID,sum(decode(b.typecode,'z01',b.countday,0)) 西瓜个数,
sum(decode(b.typecode,'z02',b.countday,0)) 桔子个数,
sum(decode(b.typecode,'z03',b.countday,0)) 香蕉个数
from b
group by b.userid) ZB,A
WHERE A.userid=ZB.ID

rain9715 2010-11-30
  • 打赏
  • 举报
回复
其实我A表还是有很多信息的,包括工号,姓名,部门,职位等,
我要的结果是这些基本信息再加个数。

就是工号,姓名,部门,职位。。。。西瓜个数,桔子个数,香蕉个数
这样的情况下,不能group by 所有字段吧?这样的情况应该怎么办?
心中的彩虹 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 rain9715 的回复:]
我有一个A表,是工号(userid),姓名(name);
还有一个B表,是工号(userid),剩余天数(countday),类型代码(typecode),类型名称(typename)

B的值现在有,A0001,12,Z01,西瓜
A0002,10,Z02,桔子
A0002,5,Z03,香蕉



现在我想查询出来的是:

工号,姓名,西瓜个数,桔子个数,香蕉……
[/Quote]
select a.userid,sum(decode(b.typecode,'z01',b.countday,0)) 西瓜个数,
sum(decode(b.typecode,'z02',b.countday,0)) 桔子个数,
sum(decode(b.typecode,'z03',b.countday,0)) 香蕉个数
from a,b
where a.userid=b.userid
group by a.userid
njlywy 2010-11-29
  • 打赏
  • 举报
回复
decode
YY_MM_DD 2010-11-29
  • 打赏
  • 举报
回复
狂浪的帖子写的不错,直接用上就行了。
http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?18003
gelyon 2010-11-29
  • 打赏
  • 举报
回复

WITH taba AS(
SELECT 'A0001' userid,'A01' NAME FROM dual UNION ALL
SELECT 'A0002','A02' FROM dual
),
tabb AS(
SELECT 'A0001' userid,12 countday,'Z01' typecode,'西瓜'typename FROM dual UNION ALL
SELECT 'A0002',10,'Z02','桔子' FROM dual UNION ALL
SELECT 'A0002',5,'Z03','香蕉' FROM dual
)
--以上是测试数据,下面是SQL查询语句,表换成你的实际表就可以了
--此只是固定行列转换的,也就是说你 typename如果是不定的,那么要用动态行列转换
--动态行列转换具体参看:http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?96900
SELECT a.userid,NAME,
Sum(Decode(b.typename,'西瓜',countday,0)) 西瓜个数,
Sum(Decode(b.typename,'桔子',countday,0)) 桔子个数,
Sum(Decode(b.typename,'香蕉',countday,0)) 香蕉个数
FROM taba a ,tabb b
WHERE a.userid=b.userid
GROUP BY a.userid,a.NAME


--结果:
USERID NAME 西瓜个数 桔子个数 香蕉个数
A0001 A01 12 0 0
A0002 A02 0 10 5
虫洞 2010-11-29
  • 打赏
  • 举报
回复
行转列

17,380

社区成员

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

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