Forums Últimos mensajes - Powered by IBM
 

Ayuda con enredada consulta con derivadas

29/12/2007 - 16:35 por José Luis | Informe spam
Sabia y erstimada gente: estoy haciendo una consulta con derivadas que me
está volviendo loco. Lo que quiero es obtenerm un listado de la gente que
debe desde hace más de 180 días. Para que tengan idea la consulta es la
siguiente:

SELECT Nuevo.* FROM (SELECT GVA14.COD_CLIENT, GVA14.RAZON_SOCI,
GVA46.N_COMP, GVA46.ESTADO_VTO, Max(DateDiff(d,GVA46.FECHA_VTO,GETDate()))
AS Dife, GVA27.NOMBRE AS Garante, GVA27.TELEFONO AS Tel_Garante FROM GVA14
INNER JOIN GVA12 ON GVA14.COD_CLIENT = GVA12.COD_CLIENT INNER JOIN GVA46 ON
GVA12.N_COMP = GVA46.N_COMP LEFT JOIN GVA27 ON GVA12.COD_CLIENT =
GVA27.COD_CLIENT WHERE GVA46.FECHA_VTO<GETDate() GROUP BY GVA14.COD_CLIENT,
GVA14.RAZON_SOCI, GVA46.N_COMP, GVA46.ESTADO_VTO, GVA27.NOMBRE,
GVA27.TELEFONO HAVING GVA46.ESTADO_VTO='PEN' AND
Max(datediff(d,GVA46.FECHA_VTO,getDate()))>180) AS NUEVO, GVA46.IMPORTE_VT,
GVA46.FECHA_VTO, GVA46.N_COMP FROM Nuevo INNER JOIN GVA46 ON Nuevo.N_COMP =
GVA46.N_COMP ORDER BY Nuevo.COD_CLIENT, GVA46.FECHA_VTO, GVA46.N_COMP

El problema está en la última parte de la consulta ("GVA46.IMPORTE_VT,
GVA46.FECHA_VTO, GVA46.N_COMP FROM Nuevo INNER JOIN GVA46 ON Nuevo.N_COMP =
GVA46.N_COMP ORDER BY Nuevo.COD_CLIENT, GVA46.FECHA_VTO, GVA46.N_COMP"), ahí
me da un error de sintaxis en el FROM, el resto funciona bien. Quisiera que
un alma caritativa me haga alguna sugerencia. Muchas gracias.


José Luis
 

Leer las respuestas

#1 Maxi Accotto
29/12/2007 - 17:37 | Informe spam
Hola, es que usted tiene dos FROM en la misma SELEC amigo! eŽl primero (la
tabla derivada) y los otros luego de las tablas derivadas, deberias hacer
join y no vale en SQL hacer

select campos from tabla from tabla from tabla


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"José Luis" escribió en el mensaje de
noticias:
Sabia y erstimada gente: estoy haciendo una consulta con derivadas que me
está volviendo loco. Lo que quiero es obtenerm un listado de la gente que
debe desde hace más de 180 días. Para que tengan idea la consulta es la
siguiente:

SELECT Nuevo.* FROM (SELECT GVA14.COD_CLIENT, GVA14.RAZON_SOCI,
GVA46.N_COMP, GVA46.ESTADO_VTO, Max(DateDiff(d,GVA46.FECHA_VTO,GETDate()))
AS Dife, GVA27.NOMBRE AS Garante, GVA27.TELEFONO AS Tel_Garante FROM GVA14
INNER JOIN GVA12 ON GVA14.COD_CLIENT = GVA12.COD_CLIENT INNER JOIN GVA46
ON GVA12.N_COMP = GVA46.N_COMP LEFT JOIN GVA27 ON GVA12.COD_CLIENT =
GVA27.COD_CLIENT WHERE GVA46.FECHA_VTO<GETDate() GROUP BY
GVA14.COD_CLIENT, GVA14.RAZON_SOCI, GVA46.N_COMP, GVA46.ESTADO_VTO,
GVA27.NOMBRE, GVA27.TELEFONO HAVING GVA46.ESTADO_VTO='PEN' AND
Max(datediff(d,GVA46.FECHA_VTO,getDate()))>180) AS NUEVO,
GVA46.IMPORTE_VT, GVA46.FECHA_VTO, GVA46.N_COMP FROM Nuevo INNER JOIN
GVA46 ON Nuevo.N_COMP = GVA46.N_COMP ORDER BY Nuevo.COD_CLIENT,
GVA46.FECHA_VTO, GVA46.N_COMP

El problema está en la última parte de la consulta ("GVA46.IMPORTE_VT,
GVA46.FECHA_VTO, GVA46.N_COMP FROM Nuevo INNER JOIN GVA46 ON Nuevo.N_COMP
= GVA46.N_COMP ORDER BY Nuevo.COD_CLIENT, GVA46.FECHA_VTO, GVA46.N_COMP"),
ahí me da un error de sintaxis en el FROM, el resto funciona bien.
Quisiera que un alma caritativa me haga alguna sugerencia. Muchas gracias.

José Luis

Preguntas similares