下面是一条sqlserver的语句,请高手帮忙转化成一条oracle语句,必有重谢!
SELECT 
emplid, 
sum(case when type = 'EMA' then 1 else 0 end) as [EMA],
sum(case when type = 'FAX' then 1 else 0 end) as [FAX],
sum(case when type = 'SMS' then 1 else 0 end) as [SMS],
sum(case when type = 'Visit' then 1 else 0 end) as [Visit],
sum(case when type = 'Training' then 1 else 0 end) as [Training],
sum(case when type = 'Account' then 1 else 0 end) as [Account]  
FROM visitrecord 
WHERE createtime between '2008-1-1' and '2008-12-31' 
GROUP BY emplid ";

解决方案 »

  1.   

    SELECT emplid,
           sum(decode(type, 'EMA', 1, 0)) as EMA,
           sum(decode(type, 'FAX', 1, 0)) as FAX,
           sum(decode(type, 'SMS', 1, 0)) as SMS,
           sum(decode(type, 'Visit', 1, 0)) as Visit
      FROM visitrecord
     WHERE createtime between to_date('2008-1-1', 'yyyy-mm-dd') and
           to_date('2008-12-31', 'yyyy-mm-dd')
     GROUP BY emplid;
    类似的这样,最后两个没给你写。
      

  2.   


    ORACLE里面需要讲字符类型转换为date?
      

  3.   

    decode就可以了decode(a,b,1,0);如果a是b,那么计数,否则不计数
      

  4.   

     sum(decode(type, 'EMA', 1, 0)) as EMA,
      

  5.   

    什么饿,Oracle照样用case select case when 1=0 then 'zz' else 'bb' end  from dual;