Ayuda con una vista

02/04/2007 - 12:06 por Daymar | Informe spam
Hola a todos,

tengo una vista con esta consulta que me devuelve un cliente, la suma de kgs
pedidos y el porcentage de su pedido sobre el total:

SELECT NombreCliente, SUM(kgs) AS KilosCliente, SUM(Percentatge) * 100 AS
PercClient
FROM (SELECT NombreCliente, kgs, kgs /
(SELECT SUM(kgs) AS
EXPR1
FROM
dbo.vw_Estadisticas) AS Percentatge
FROM dbo.vw_Estadisticas
WHERE (kgs IS NOT NULL)) DERIVEDTBL
GROUP BY NombreCliente
ORDER BY SUM(Percentatge) DESC

Ahora tengo que modificarla para que ademas de esto me devuelva otra columna
en la que se vaya sumando el porcentage, es decir:

Cliente kgs Porcentage Suma acumulada
clienteA 2000 4 4
clienteB 1000 2 6
clienteC 500 1 7

¿Alguien sabe como hacerlo? Muchas gracias por vuestra ayuda.
 

Leer las respuestas

#1 Javier Loria
02/04/2007 - 14:38 | Informe spam
Hola Daymar:
Asumiendo que tienes SQL 2000, podrias tratar con:
=SELECT A.NombreCliente
, A.KilosCliente
, 100.0*A.KilosCliente/(SELECT SUM(kgs) FROM dbo.vw_Estadisticas) AS
PorcCliente
, SUM(B.KilosCliente) AS PorcAcumulado
, 100.0*SUM(B.KilosCliente)/(SELECT SUM(kgs) FROM dbo.vw_Estadisticas)
AS PorcAcumulado
FROM (SELECT NombreCliente
, SUM(kgs) AS KilosCliente
FROM dbo.vw_Estadisticas
WHERE (kgs IS NOT NULL)
GROUP BY NombreCliente) AS A
JOIN (SELECT NombreCliente
, SUM(kgs) AS KilosCliente
FROM dbo.vw_Estadisticas
WHERE (kgs IS NOT NULL)
GROUP BY NombreCliente) AS B
ON A.KilosCliente>=B.KilosCliente
GROUP BY A.NombreCliente
, A.KilosCliente
= Si tienes SQL2005 una CTE haria la sintaxis mas facil.
Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"Daymar" wrote in message
news:
Hola a todos,

tengo una vista con esta consulta que me devuelve un cliente, la suma de
kgs
pedidos y el porcentage de su pedido sobre el total:

SELECT NombreCliente, SUM(kgs) AS KilosCliente, SUM(Percentatge) * 100 AS
PercClient
FROM (SELECT NombreCliente, kgs, kgs /
(SELECT SUM(kgs) AS
EXPR1
FROM
dbo.vw_Estadisticas) AS Percentatge
FROM dbo.vw_Estadisticas
WHERE (kgs IS NOT NULL)) DERIVEDTBL
GROUP BY NombreCliente
ORDER BY SUM(Percentatge) DESC

Ahora tengo que modificarla para que ademas de esto me devuelva otra
columna
en la que se vaya sumando el porcentage, es decir:

Cliente kgs Porcentage Suma acumulada
clienteA 2000 4 4
clienteB 1000 2 6
clienteC 500 1 7

¿Alguien sabe como hacerlo? Muchas gracias por vuestra ayuda.

Preguntas similares