PDA

Ver la Versión Completa : Error en sql cuando cambie de version


IVAND
01-05-2005, 01:36:46
Hola a todos , he tenido mas de un año programando el delphi y firebird 1.0 ahora me decidi a cambiara a firebird 1.5.2 pero en algunos querys que funcionaban perfecto (o aparentemente perfectos ) ahora no me funcionan indicando que hay error en las clausular del GROUP BY

aqui les pongo un ejemplo

Select key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=101) as CHEQ ,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=100) as EFEC ,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=109) as FACR ,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=105) as IVA ,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=106) as DCTOV,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=107) as RFLET,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=108) as RTARC,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=104) as RETFU,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=694) as RIVA ,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=102) as TCRED,
(Select z(sum(t2.total)) from form_pago t2
Where t2.key_cab_fac=t1.key_cab_fac and t2.cod_pago=533) as VEN_A
From form_pago t1,cab_fac c
LEFT JOIN clientes C1 ON c.key_cliente=c1.key_cliente
Where t1.key_cab_fac=c.key_cab_fac and c.estado_fac="T"
and Extractdate(c.fec_factura) Between :Fdesde and :Fhasta
group by key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre

Ese query lo que hace es crear las filas en columnas repito funcionaba en f1 ahora en f1.5.2 no funciona alguien me puede dar la mano ... Gracias de antemano

lbuelvas
01-05-2005, 19:30:34
Hola foro,

Bueno a mi paso, que cuando cambie de Interbase a Firebird 1.0.3 las sentencias select que hacian uso de join mostraban error de ambiguedad.

Debe en firebird especificarse a que tabla se hace referencia cuando existen campos con igual nombre en diferentes tablas.

Prueba cambiar

and Extractdate(c.fec_factura) Between :Fdesde and :Fhasta
group by key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre

por:

and Extractdate(c.fec_factura) Between :Fdesde and :Fhasta
group by xxxxxxx.key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre

coloque xxxxxxx porque francamente no se a cual tabla haces referencia.

Una pregunta: esa consulta que pretende mostrar ?

Un feliz dia.

Luis F. Buelvas T.

lbuelvas
01-05-2005, 19:32:00
Hola foro,

creo que tambien debes cambiar:

Select key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre,

por

Select xxxxxx.key_cab_fac,c.key_caja,c1.cod_cliente,c1.nombre,

IVAND
02-05-2005, 23:57:43
Gracias por contestar

Te comento que lo que dices lo acabo de hacer pero igual me da el mismo error ..

Seguire probando :-(

Nota : Lo que pretende es que un datos asi :

Cab_fac dato valor
-----------------------
1 C10 5
1 C12 7
1 C13 20.25
1 C14 40


Quede asi

Cab__fac C10 c12 c13 c14
---------------------------------------------
1 5 7 20.25 40

lbuelvas
03-05-2005, 01:44:34
Este tipo de consultas cross-tab, personalmente las elaboro con un procedimiento almacenado, se vera mas legible y ademas puedes hacer consultas sobre el resultado de dicho procedimiento almacenado.