天啊,这么多join,眼都看花了

解决方案 »

  1.   

    我觉得 average 应该是数值型,所以作如下改动,楼主试试: select a.shb_id,
           sum(case when c.hid=21 then c.average else 0 end) as h01
           sum(case when c.hid=22 then c.average else 0 end) as h02,
           sum(case when c.hid=23 then c.average else 0 end) as h03,
           sum(case when c.hid=24 then c.average else 0 end) as h04,
           sum(case when c.hid=1  then c.average else 0 end) as h05,
           sum(case when c.hid=2  then c.average else 0 end) as h06,
           sum(case when c.hid=3  then c.average else 0 end) as h07,
           sum(case when c.hid=4  then c.average else 0 end) as h08,
           sum(case when c.hid=5  then c.average else 0 end) as h09,
           sum(case when c.hid=6  then c.average else 0 end) as h10,
           sum(case when c.hid=7  then c.average else 0 end) as h11,
           sum(case when c.hid=8  then c.average else 0 end) as h12,
           sum(case when c.hid=9  then c.average else 0 end) as h13,
           sum(case when c.hid=10 then c.average else 0 end) as h14,
           sum(case when c.hid=11 then c.average else 0 end) as h15,
           sum(case when c.hid=12 then c.average else 0 end) as h16,
           sum(case when c.hid=13 then c.average else 0 end) as h17,
           sum(case when c.hid=14 then c.average else 0 end) as h18,
           sum(case when c.hid=15 then c.average else 0 end) as h19,
           sum(case when c.hid=16 then c.average else 0 end) as h20,
           sum(case when c.hid=17 then c.average else 0 end) as h21,
           sum(case when c.hid=18 then c.average else 0 end) as h22,
           sum(case when c.hid=19 then c.average else 0 end) as h23,
           sum(case when c.hid=20 then c.average else 0 end) as h24,
           c.scrq
    from
         (select shb_id from shb_table) a
    left join
         (select shb_id ,scrq ,average ,hid from v_hour) c
    on 
         a.shb_id=c.shb_id and a.scrq=c.scrq
    group by
         a.shb_id,c.scrq
      

  2.   

    试试这样(没写全,你自己补齐就好)select 
    z.shb_id,
    y.scrq
    CASE WHEN hid=21 THEN average END AS h01
    CASE WHEN hid=22 THEN average END AS h02from shb_table AS z
    LEFT JOIN v_hour AS y ON z.shb_id=y.shb_id
      

  3.   

    select a.shb_id,
           sum(case when c.hid=21 then c.average else 0 end) as h01
           sum(case when c.hid=22 then c.average else 0 end) as h02,
           sum(case when c.hid=23 then c.average else 0 end) as h03,
           sum(case when c.hid=24 then c.average else 0 end) as h04,
           sum(case when c.hid=1  then c.average else 0 end) as h05,
           sum(case when c.hid=2  then c.average else 0 end) as h06,
           sum(case when c.hid=3  then c.average else 0 end) as h07,
           sum(case when c.hid=4  then c.average else 0 end) as h08,
           sum(case when c.hid=5  then c.average else 0 end) as h09,
           sum(case when c.hid=6  then c.average else 0 end) as h10,
           sum(case when c.hid=7  then c.average else 0 end) as h11,
           sum(case when c.hid=8  then c.average else 0 end) as h12,
           sum(case when c.hid=9  then c.average else 0 end) as h13,
           sum(case when c.hid=10 then c.average else 0 end) as h14,
           sum(case when c.hid=11 then c.average else 0 end) as h15,
           sum(case when c.hid=12 then c.average else 0 end) as h16,
           sum(case when c.hid=13 then c.average else 0 end) as h17,
           sum(case when c.hid=14 then c.average else 0 end) as h18,
           sum(case when c.hid=15 then c.average else 0 end) as h19,
           sum(case when c.hid=16 then c.average else 0 end) as h20,
           sum(case when c.hid=17 then c.average else 0 end) as h21,
           sum(case when c.hid=18 then c.average else 0 end) as h22,
           sum(case when c.hid=19 then c.average else 0 end) as h23,
           sum(case when c.hid=20 then c.average else 0 end) as h24,
           c.scrq
    from
         (select shb_id from shb_table) a
    left join
         v_hour c
    on 
         a.shb_id = c.shb_id and a.scrq = c.scrq
    group by
         a.shb_id,c.scrq
      

  4.   

    我改了改,楼主再试试:select a.shb_id,
           sum(case when c.hid=21 then c.average else 0 end) as h01
           sum(case when c.hid=22 then c.average else 0 end) as h02,
           sum(case when c.hid=23 then c.average else 0 end) as h03,
           sum(case when c.hid=24 then c.average else 0 end) as h04,
           sum(case when c.hid=1  then c.average else 0 end) as h05,
           sum(case when c.hid=2  then c.average else 0 end) as h06,
           sum(case when c.hid=3  then c.average else 0 end) as h07,
           sum(case when c.hid=4  then c.average else 0 end) as h08,
           sum(case when c.hid=5  then c.average else 0 end) as h09,
           sum(case when c.hid=6  then c.average else 0 end) as h10,
           sum(case when c.hid=7  then c.average else 0 end) as h11,
           sum(case when c.hid=8  then c.average else 0 end) as h12,
           sum(case when c.hid=9  then c.average else 0 end) as h13,
           sum(case when c.hid=10 then c.average else 0 end) as h14,
           sum(case when c.hid=11 then c.average else 0 end) as h15,
           sum(case when c.hid=12 then c.average else 0 end) as h16,
           sum(case when c.hid=13 then c.average else 0 end) as h17,
           sum(case when c.hid=14 then c.average else 0 end) as h18,
           sum(case when c.hid=15 then c.average else 0 end) as h19,
           sum(case when c.hid=16 then c.average else 0 end) as h20,
           sum(case when c.hid=17 then c.average else 0 end) as h21,
           sum(case when c.hid=18 then c.average else 0 end) as h22,
           sum(case when c.hid=19 then c.average else 0 end) as h23,
           sum(case when c.hid=20 then c.average else 0 end) as h24,
           c.scrq
    from
         (select shb_id from shb_table) a
    left join
         (select shb_id ,scrq ,average ,hid from v_hour) c
    on 
         a.shb_id=c.shb_id
    group by
         a.shb_id,c.scrq
      

  5.   

    汗ing,再改一下:select a.shb_id,
           sum(case when c.hid=21 then c.average else 0 end) as h01
           sum(case when c.hid=22 then c.average else 0 end) as h02,
           sum(case when c.hid=23 then c.average else 0 end) as h03,
           sum(case when c.hid=24 then c.average else 0 end) as h04,
           sum(case when c.hid=1  then c.average else 0 end) as h05,
           sum(case when c.hid=2  then c.average else 0 end) as h06,
           sum(case when c.hid=3  then c.average else 0 end) as h07,
           sum(case when c.hid=4  then c.average else 0 end) as h08,
           sum(case when c.hid=5  then c.average else 0 end) as h09,
           sum(case when c.hid=6  then c.average else 0 end) as h10,
           sum(case when c.hid=7  then c.average else 0 end) as h11,
           sum(case when c.hid=8  then c.average else 0 end) as h12,
           sum(case when c.hid=9  then c.average else 0 end) as h13,
           sum(case when c.hid=10 then c.average else 0 end) as h14,
           sum(case when c.hid=11 then c.average else 0 end) as h15,
           sum(case when c.hid=12 then c.average else 0 end) as h16,
           sum(case when c.hid=13 then c.average else 0 end) as h17,
           sum(case when c.hid=14 then c.average else 0 end) as h18,
           sum(case when c.hid=15 then c.average else 0 end) as h19,
           sum(case when c.hid=16 then c.average else 0 end) as h20,
           sum(case when c.hid=17 then c.average else 0 end) as h21,
           sum(case when c.hid=18 then c.average else 0 end) as h22,
           sum(case when c.hid=19 then c.average else 0 end) as h23,
           sum(case when c.hid=20 then c.average else 0 end) as h24,
           c.scrq
    from
         (select shb_id from shb_table) a
    left join
         v_hour c
    on 
         a.shb_id=c.shb_id
    group by
         a.shb_id,c.scrq
      

  6.   

    人家average 也没有要求求和,你求和的话好像