【求助】如何把如下格式用SQL语言部分行以列的形式显示?
单位编号 单位名称 险种类型 金额 滞纳金 利息 小计
370236001 dwmc1 养老 1500 50 5 1555
370236001 dwmc1 失业 1400 0 4 1404
370236001 dwmc1 医疗 1300 0 3 1303
370236001 dwmc1 工伤 1200 0 2 1202
370236001 dwmc1 生育 1100 0 1 1101
转换后期望结果格式:
单位编号 单位名称 养老 失业 医疗 工伤 生育 滞纳金 利息 合计
370236001 dwmc1 1500 1400 1300 1200 1100 50 15 6565
请求各位高手帮助写个PL/SQL语句????
email:[email protected]

解决方案 »

  1.   

    select 单位编号,单位名称,
           max(decode(险种类型,养老,金额,0)) as "养老",
           max(decode(险种类型,失业,金额,0)) as "失业",
           max(decode(险种类型,医疗,金额,0)) as "医疗",
           max(decode(险种类型,工伤,金额,0)) as "工伤",
           max(decode(险种类型,生育,金额,0)) as "生育",
           sum(滞纳金) as "滞纳金",
           sum(利息) as "利息",
           sum(金额+滞纳金+利息) as "合计"
      from yourTable
    group by 单位编号,单位名称
    order by 单位编号
      

  2.   

    SELECT 单位编号,单位名称,MAX(DECODE(险种类型,'养老',金额,0)) 养老,MAX(DECODE(险种类型,'失业',金额,0)) 失业,
    MAX(DECODE(险种类型,'医疗',金额,0)) 医疗,MAX(DECODE(险种类型,'工伤',金额,0)) 工伤,MAX(DECODE(险种类型,'生育',金额,0)) 生育,
     SUM(滞纳金) 滞纳金,SUM(利息) 利息,SUM(金额)+SUM(滞纳金)+SUM(利息) 合计 FROM TABLENAME GROUP BY 单位编号,单位名称
      

  3.   

    select 单位编号 , 单位名称 ,
      sum(case 险种类型 when '养老' then 金额 else 0 end) 养老,
      sum(case 险种类型 when '失业' then 金额 else 0 end) 失业,
      sum(case 险种类型 when '医疗' then 金额 else 0 end) 医疗,
      sum(case 险种类型 when '工伤' then 金额 else 0 end) 工伤,
      sum(case 险种类型 when '生育' then 金额 else 0 end) 生育,
      sum(滞纳金) 滞纳金,
      sum(利息) 利息,
      sum(小计) 合计
    from tb
    group by 单位编号 , 单位名称
      

  4.   

    同一问题发二个贴啊,再次说下,字段so熟悉,哈!lz的问题答案2,4楼都行,个人觉的二楼的max改为sum好些,
      

  5.   

    如果行数不定,只能用动态SQL了
      

  6.   

    我这里遇到了decode的条件有几十个,难道要一个个都写出来吗,不能用更简单的办法么