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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 José Luis
02/01/2008 - 11:31 | Informe spam
Muchas gracias por la respuesta. Voy a ver como hago para evitar tantos
from. Saludos.

"Maxi Accotto" escribió en el mensaje
news:%
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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida