Algo de SubConsultas

02/09/2004 - 20:18 por IRakRubio | Informe spam
Hola: Resulta que tengo una tablota que se llama facturas
y que incluye la venta de nuestros servicios de todo el
año, yo necesito una consulta que me devuelva registro por
cliente del total facturado por mes: Algo Asi:

Cliente ENE FEB MAR ABR . . .
100010 12080.55 10198.47 9987.50 12781.55
100011 10128.66 12328.55 10125.55 16758.47...

La situacion es que este resultado debe ser proporcionado
en una misma instruccion select, es decir sin crear vistas
externas.

Yo hice algo asi:
SELECT TOP 100 PERCENT CveCliente, Cliente, MONTH
(Fecha) AS MES,
(Select sum(GranTotal) from dbo.facturas Where MONTH(Fecha)
=8 AND Estatus='AC') AS Agosto
FROM dbo.Facturas
GROUP BY CveCliente, Cliente, MONTH(Fecha)
ORDER BY CveCliente

Pero el resultado que me devuelve es la venta total del
mes de agosto repetido por todos y cada uno de mis
clientes,
La idea que mas o menos tengo (Pero que no se como
aplicarla) es crear un parametro que tome el valor de la
clave del cliente de la consulta superior y que sirva como
filtro de cliente en la subconsulta) Obviamente este
parametro debe cambiar conforme cada cliente.

Espero haberme explicado. Un millon de gracias.
 

Leer las respuestas

#1 Liliana Sorrentino
02/09/2004 - 20:45 | Informe spam
Hola,
Para sacar una columna por mes con el total de lo facturado, necesitás un
cross-table (al menos por ahora):

SELECT Cliente,
SUM(CASE WHEN month(getdate()) = 1 THEN Importe ELSE 0 END),
SUM(CASE WHEN month(getdate()) = 2 THEN Importe ELSE 0 END),
.
.
.
SUM(CASE WHEN month(getdate()) = 11 THEN Importe ELSE 0 END),
SUM(CASE WHEN month(getdate()) = 12 THEN Importe ELSE 0 END)
FROM Tabla
WHERE Estatus='AC'
GROUP BY Cliente

No entiendo el control que hacés por Agosto, pero digamos que esa es la
estructura, verás cómo adaptarla.
Saludos... Liliana.

"IRakRubio" escribió en el mensaje
news:506501c49119$43ee5800$
Hola: Resulta que tengo una tablota que se llama facturas
y que incluye la venta de nuestros servicios de todo el
año, yo necesito una consulta que me devuelva registro por
cliente del total facturado por mes: Algo Asi:

Cliente ENE FEB MAR ABR . . .
100010 12080.55 10198.47 9987.50 12781.55
100011 10128.66 12328.55 10125.55 16758.47...

La situacion es que este resultado debe ser proporcionado
en una misma instruccion select, es decir sin crear vistas
externas.

Yo hice algo asi:
SELECT TOP 100 PERCENT CveCliente, Cliente, MONTH
(Fecha) AS MES,
(Select sum(GranTotal) from dbo.facturas Where MONTH(Fecha)
=8 AND Estatus='AC') AS Agosto
FROM dbo.Facturas
GROUP BY CveCliente, Cliente, MONTH(Fecha)
ORDER BY CveCliente

Pero el resultado que me devuelve es la venta total del
mes de agosto repetido por todos y cada uno de mis
clientes,
La idea que mas o menos tengo (Pero que no se como
aplicarla) es crear un parametro que tome el valor de la
clave del cliente de la consulta superior y que sirva como
filtro de cliente en la subconsulta) Obviamente este
parametro debe cambiar conforme cada cliente.

Espero haberme explicado. Un millon de gracias.

Preguntas similares