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

SQL话语列转行

2013-06-25 
SQL语句列转行.本帖最后由 s63403048 于 2013-05-20 10:54:24 编辑RT.列转行成功.但是带入机构条件就提示

SQL语句列转行.
本帖最后由 s63403048 于 2013-05-20 10:54:24 编辑 RT.列转行成功.
但是带入机构条件就提示不是单组分组函数.
去掉


    b.branchcode||'-'||b.branchname as bran,

这一段,就可以显示了
(需求里必须显示机构咧.)
麻烦了



 --按脱保原因调查表的统计方法
 select 
    b.branchcode||'-'||b.branchname as bran,
   sum(case s.offreasons when '保单价格原因'  then count(distinct  c.licenseno || substr(engineno, length(engineno) - 5, 6))   else null end)  as offresions1 ,
    sum(case s.offreasons when  '其它主体手续费较高'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions2,
    sum(case s.offreasons when  '其它主体赠送礼品'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions3,
    sum(case s.offreasons when   '理赔服务问题'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions4,
    sum(case s.offreasons when   '过户、转卖他人'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions5,
    sum(case s.offreasons when   '车辆报废'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions6,
    sum(case s.offreasons when   '业务员离职或转其它支公司'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions7,
    sum(case s.offreasons when   '本身为市场业务,流动性交强'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions8,
    sum(case s.offreasons when   '其它主体关系客户'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions9,
    sum(case s.offreasons when   '已在人保兄弟公司承保'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions10,
    sum(case s.offreasons when   '已在其它主体承保'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions11,
    sum(case s.offreasons when   '其它原因'  then   count(distinct c.licenseno || substr(engineno, length(engineno) - 5, 6))  else null end) as  offresions12


from 
     bascarinfo c, basmemberinfo m, offreasons s,sys_branch b
 where c.memberid = m.memberid
   and m.memberid = s.memberid
   and c.allotorgan = b.branchcode
   group by b.branchcode,b.branchname,s.offreasons
    
 
 


[解决办法]
group by 写错了
group by b.branchcode
[解决办法]
'-'
[解决办法]
b.branchname 试试
[解决办法]
里面写了一堆 就是要求个数量呀  这样可以么


select 
    b.branchcode
[解决办法]
'-'
[解决办法]
b.branchname as bran,
    c.licenseno 
[解决办法]
 substr(engineno, length(engineno) - 5, 6) lic,
   sum(decode(s.offreasons,'保单价格原因',1,0)) offresions1,
   sum(decode(s.offreasons,'其它主体手续费较高',1,0)) offresions2,
   sum(decode(s.offreasons,'其它主体赠送礼品',1,0)) offresions3
from 
     bascarinfo c, basmemberinfo m, offreasons s,sys_branch b
 where c.memberid = m.memberid
   and m.memberid = s.memberid
   and c.allotorgan = b.branchcode
   group by b.branchcode,b.branchname,licenseno,substr(engineno, length(engineno) - 5, 6)

热点排行