首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

一路数据库的面试题

2013-01-18 
一道数据库的面试题有A表,怎么变成B表输出A表编号房间数量负责1A20张三2B40李四3A50王五4A50赵六5C70张三C

一道数据库的面试题
有A表,怎么变成B表输出
A表
编号       房间      数量        负责
1         A        20        张三
2         B        40         李四
3         A        50         王五
4         A        50          赵六
5         C        70        张三


C
1    负责   A     B         C       
2     张三  20    0         70
3     李四   0     40        0
4     王五   050    0        0



大概是这个意思,,

有没有大神说下啊


 
[解决办法]
select 负责,sum(decode(房间,'A',数量,0)) as A,sum(decode(房间,'B',数量,0)) as B,sum(decode(房间,'C',数量,0)) as C from A group by 负责
[解决办法]

 with a as(
 select 1 编号,'A' 房间,20 数量,'张三' 负责 from dual
 union all
 select 2,'B',40,'李四' from dual
 union all
 select 3,'A',50,'王五' from dual
 union all
 select 4,'A',50,'赵六' from dual
 union all
  select 5,'C',70,'张三' from dual
 )
 select 负责,
        sum(decode(房间, 'A', 数量, 0)) A,
        sum(decode(房间, 'B', 数量, 0)) B,
        sum(decode(房间, 'C', 数量, 0)) C
   from a
  group by 负责;
负责          A          B          C
---- ---------- ---------- ----------
王五         50          0          0
张三         20          0         70
李四          0         40          0
赵六         50          0          0

热点排行