我有一个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请问这样的查询语句,应该怎么写?在线等,谢谢。
还有一个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请问这样的查询语句,应该怎么写?在线等,谢谢。
解决方案 »
- 关于Oracle 分区表与其他表关联时的疑问
- PLSQL错误提示 :ORA-06534: 无法访问可连续重用的程序包 "PLSQL.COMMON_FUNCTION",高手指点一下。
- 为什么我创建的数据表要加上引号才能访问到?
- aix上是如何查询连接oracle的用户的,如:
- drop 了一个2G的表,但硬盘空间没有释放,该怎么办啊,急!!!
- 高分求ORACLE视频教程或讲座
- ORACLE SQL性能优化系列
- ORACLE8.1.7导入8.1.6时 无法转换为环境本国字符集句柄
- 做一个交叉报表行按col1 分组,列按col2分组写一个oracle 的存储过程,如何写。
- 哪位大神有ibatis配置orcle连接池的源码,着急用
- 菜鸟问题,游标
- left join里能加上where吗
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
http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?18003
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
我要的结果是这些基本信息再加个数。就是工号,姓名,部门,职位。西瓜个数,桔子个数,香蕉个数
这样的情况下,不能group by 所有字段吧?这样的情况应该怎么办?
(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
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