Cantidad de registros devueltos en una variable por una consulta con group by

25/05/2007 - 17:50 por ghazarian.martin | Informe spam
Hola,
El tema es el siguiente, supongamos que tengo una tabla Ventas, la
cual tiene los siguientes campos:
IdVta, MontoVta,FechaVta,CliVta,StatusVta,

StatusVta puede ser ='VENTA' o 'No Venta'


Yo quiero lo siguiente, con un stored procedured,

Contar la cantidad de ventas que hay!, pero ojo!!.> CliVta es una
referencia lógica a una tabla de clientes, es decir por cada cliente
puede existir varios registros en la tabla venta, A MI ME INTERESA EL
ÚLTIMO REGISTRO INGRESADO, el cual lo controlo por FechaVta
->
select clivta, max(fechavta)
from ventas
group by (clivta)

esto me devuelve por cada cliente la última "venta/no venta" se le
podría agregar en having que sea venta, etc,

quiero saber si existe una manera de contar las ventas por cada
cliente, pero la venta se toma si el último registro por cliente tiene
status = 'VENTA' (por eso no sirve contar la cantidad de veces que
aparezca status=venta, ya que puede ingresarse un registro NO VENTA al
cliente más reciente), espero haberme explicado

No quiero hacer cosas de cursores, etc,
Probé con todo count select, select count, etc,etc, pero no pude, en
internet no encontré absolutamente nada...pero no hay problema que no
tenga solución ¿no?

Gracias como siempre,
Martín

Preguntas similare

Leer las respuestas

#6 Jesús López
31/05/2007 - 23:31 | Informe spam
Sigues sin decir cual es el resultado, has dicho que es un número. ¿Pero
para el ejemplo que has puesto cual es ese número?


"" escribió en el
mensaje news:
quiero que me devuelva la cantidad de ventas, es decir un número
dicho cardinal dependerá de la cantidad de ventas que se hayan
realizado, para ver esto veo en la tabla ventas, la última gestión de
cada cliente, es decir por cada cliente tomo el registro con la fecha
más reciente y veo si es 'VENTA' si es venta sumo sino no...
pero ese número lo quiero en una variable, porque lo estoy usando en
un STORED PROCEDURE

Gracias por las participaciones realizadas, y espero que encontremos
una solución..
Un Abrazo,
Martín
#7 ghazarian.martin
02/06/2007 - 10:09 | Informe spam
mmm, creo que no entendieron mucho si me hacen esa pregunta, tal vez
me haya expresado mal
para el ejemplo sería 1
porque hay dos clientes!, el cliente con código = 1, tiene su último
registro (max(fecha)) con una NO VENTA, entonces no suma
y el cliente con el código = 2 tiene su último registro con una VENTA
entonces suma...

si ubieran más registros con clientes nuevos, es decir cliente = 3,
cliente = 4
de estos me fijaría sólo en su último registro, y si el estado es una
venta, sumaría uno, sino nada...
Me explico???????????

espero que me puedan comprender para empezar a discutir del problema
en si
#8 Jesús López
03/06/2007 - 23:18 | Informe spam
Hombre, ya era hora !! Por fin quedó claro lo que cuentas !!

La cuenta que quieres es la última de las tres que te puse:

SELECT COUNT(*)
FROM (
SELECT ClienteVta
FROM Ventas V1
GROUP BY ClienteVta
HAVING (SELECT TOP 1 EstadoVta
FROM Ventas V2
WHERE V2.ClienteVta = V1.ClienteVta
ORDER BY FechaVta DESC, CodigoVta DESC) = 'VENTA'
) AS V

Si lo que quieres es meter el resultado en una varible, pues sólo hay que
asignarla

DECLARE @Cuenta int
SELECT @Cuenta = COUNT(*)
FROM (
SELECT ClienteVta
FROM Ventas V1
GROUP BY ClienteVta
HAVING (SELECT TOP 1 EstadoVta
FROM Ventas V2
WHERE V2.ClienteVta = V1.ClienteVta
ORDER BY FechaVta DESC, CodigoVta DESC) = 'VENTA'
) AS V


Saludos:

Jesús López
www.solidq.com





"" escribió en el
mensaje news:
mmm, creo que no entendieron mucho si me hacen esa pregunta, tal vez
me haya expresado mal
para el ejemplo sería 1
porque hay dos clientes!, el cliente con código = 1, tiene su último
registro (max(fecha)) con una NO VENTA, entonces no suma
y el cliente con el código = 2 tiene su último registro con una VENTA
entonces suma...

si ubieran más registros con clientes nuevos, es decir cliente = 3,
cliente = 4
de estos me fijaría sólo en su último registro, y si el estado es una
venta, sumaría uno, sino nada...
Me explico???????????

espero que me puedan comprender para empezar a discutir del problema
en si
Ads by Google
Search Busqueda sugerida