Convert Csql in criteria

Hi! everybody

I have this function for generate a view in a gridview. it is possible convert to function search()?, then i try to generate a report in pdf but i have some problems with the concat_group.




public function EntidadesServicios() 

                                

                {

                $count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tb_entidades_servicios')->queryScalar();

            

                $sql="SELECT 

                        d.NOMBRE_CORTO as 'Nombre'

                        ,d.COD_NRBE as 'codigo'

                        ,b.ID_ENTI_SERVICIO 

                        ,b.ID_ENTI

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 1,b.TIP_PARTICIPA,NULL))) AS '1'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 2,b.TIP_PARTICIPA,NULL))) AS '2'	

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 3,b.TIP_PARTICIPA,NULL))) AS '3'	

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 4,b.TIP_PARTICIPA,NULL))) AS '4'	

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 5,b.TIP_PARTICIPA,NULL))) AS '5'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 6,b.TIP_PARTICIPA,NULL))) AS '6'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 7,b.TIP_PARTICIPA,NULL))) AS '7'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 8,b.TIP_PARTICIPA,NULL))) AS '8'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 9,b.TIP_PARTICIPA,NULL))) AS '9'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 10,b.TIP_PARTICIPA,NULL))) AS '10'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 11,b.TIP_PARTICIPA,NULL))) AS '11'

                             , GROUP_CONCAT(DISTINCT (IF(b.ID_SERVICIO = 12,b.TIP_PARTICIPA,NULL))) AS '12'


                        FROM tb_entidades_servicios b

                                ,tip_servicios c

                                ,tb_entidades d

                        where 

                                c.ID_SERVICIOS = b.ID_SERVICIO

                        and

                                d.ID_ENTI = b.ID_ENTI

                        and 	/* only show the code with state 1 = alta*/

                        	d.ESTADO = 1        


                        GROUP BY d.COD_NRBE";

                $resultado_sql = Yii::app()->db->createCommand($sql);     

               

                $session=new CHttpSession;

                $session->open();

                $session['TbEntidadesServicios_records']=$resultado_sql;  

        

                              

                return new CSqlDataProvider($resultado_sql, array(

                        'totalItemCount'=>$count, 

                        'keyField'=>'ID_ENTI_SERVICIO',   

                        'pagination'=>array('pageSize'=>$count),

                 

                        

                )); 

        die();

        }




sorry for my english.