Buen dia amigos del foro. Tengo una funcion que hace varios agrupaciones para un balance de comprobacion, una para los saldos iniciales, para los movimientos, etc y los voy uniendo con union all. Mi problema radica cuando quiero agrupar por un campo extrayendo los 2,3 o 4, digitos iniciales de la cuenta, segun el parametro $4. He estado haciendo esto:
SELECT substring(fpcdet.m_ccta,1,$4) as m_ccta, SUM(CASE WHEN fpcdet.M_ACCI='D' THEN fpcdet.M_IMPN ELSE 0.00 END) AS SI_DEBE, SUM(CASE WHEN fpcdet.M_ACCI='H' THEN fpcdet.M_IMPN ELSE 0.00 END) AS SI_HABE, 0.00 AS MV_DEBE,0.00 AS MV_HABE,0.00 AS SA_DEBE,0.00 AS SA_HABE FROM fpcdet inner join fpccab on fpcdet.m_empr=fpccab.m_empr and fpcdet.m_anop=fpccab.m_anop and fpcdet.m_mesp=fpccab.m_mesp and fpcdet.m_grup=fpccab.m_grup and fpcdet.m_ncom=fpccab.m_ncom where fpcdet.m_empr=$1 and fpcdet.M_anop=$2 and fpcdet.M_MESP<$3 and fpccab.m_cont='S' GROUP BY fpcdet.m_ccta Con esto no me funciona bien, pero si le coloco GROUP BY 1 , me funciona bien, pero no se si es lo mas correcto O seria mas conveniente; GROUP BY substring(fpcdet.m_ccta,1,$4). Gracias por sus respuestas. *Felipe Araoz Ramos* RPM #941990605 / 941990605 RPC 992760385 NXT 822*9500 / 998229500