select count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('103','401','303')then 1 end)as a1,
count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('104','402','304')then 1 end)as a2,
count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('105','403','305')then 1 end)as a3,
count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('106','404','306')then 1 end)as a4,
count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('107','405','307')then 1 end)as a5,
count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('108','406','308')then 1 end)as a6, a1+a2+a3+a4+a5+a6
 from (select sn,c_ltlb,c_lthxsdyjb from t_ryltxx where c_ltlb in
('60','61','74')) t;
为什么提示a6无效呢,oracle不支持:a1+a2+a3+a4+a5+a6这样写吗?
这样看看。

解决方案 »

  1.   

    select count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('103','401','303')then 1 end)as a1,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('104','402','304')then 1 end)as a2,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('105','403','305')then 1 end)as a3,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('106','404','306')then 1 end)as a4,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('107','405','307')then 1 end)as a5,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('108','406','308')then 1 end)as a6, a1+a2+a3+a4+a5+a6
      

  2.   

    select a1, a2, a3, a4, a5, a6, a1+a2+a3+a4+a5+a6
    from (select count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('103','401','303')then 1 end)as a1,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('104','402','304')then 1 end)as a2,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('105','403','305')then 1 end)as a3,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('106','404','306')then 1 end)as a4,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('107','405','307')then 1 end)as a5,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('108','406','308')then 1 end)as a6)
      

  3.   

    去掉a1+a2+a3+a4+a5+a6,这个就好用了,但是我要把上面的数加到一起,如果用语句加的话,那太长了,有没有更好的办法啊
      

  4.   

    你写的语句能好用吗,我以前的from后面的那些语句怎么往上加啊?
      

  5.   

    select tb.*
           ,tb.a1+tb.a2+tb.a3+tb.a4+tb.a5+tb.a6
    from
        (
           select count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('103','401','303')then 1 end)as a1,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('104','402','304')then 1 end)as a2,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('105','403','305')then 1 end)as a3,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('106','404','306')then 1 end)as a4,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('107','405','307')then 1 end)as a5,
    count(case when t.c_ltlb='60' and t.c_lthxsdyjb in('108','406','308')then 1 end)as a6,a1+a2+a3+a4+a5+a6
     from (select sn,c_ltlb,c_lthxsdyjb from t_ryltxx where c_ltlb in
    ('60','61','74')) t   ) tb