Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

De que forma puedo traer los últimos 3 registros agrupado por algo específico

Estas en el tema de De que forma puedo traer los últimos 3 registros agrupado por algo específico en el foro de SQL Server en Foros del Web. Les tengo una pregunta. Necesito buscar la cantidad facturada de un producto específico en las últimas 3 facturas hecha a un cliente específico. El problema ...
  #1 (permalink)  
Antiguo 22/02/2007, 14:06
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
De que forma puedo traer los últimos 3 registros agrupado por algo específico

Les tengo una pregunta.

Necesito buscar la cantidad facturada de un producto específico en las últimas 3 facturas hecha a un cliente específico.

El problema es que tengo que buscar de cada producto lo facturado en las últimas tres facturas por cada cliente

Actualmente tengo 35,000 clientes aproximadamente y actualmente la empresa vende 162 productos diferentes. Esto significa que estoy haciendo 35,000 x 162 consultas a la base de datos para buscar la información.

¿Qué harían ustedes para traer toda la información en una sola consulta?

El Select que estoy haciendo es el siguiente:
Código:
SELECT TOP 3 SUM(FacturasDetalle.CantVendida) AS Cantidad, Facturas.Fecha FROM Facturas 
INNER JOIN FacturasDetalle ON Facturas.NoFactura = FacturasDetalle. NoFactura 
WHERE Facturas.CodCliente = '0001000248' AND FacturasDetalle.CodProducto = '000000201'
GROUP BY Facturas.Fecha
ORDER BY Facturas.Fecha DESC
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 22/02/2007, 14:23
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: De que forma puedo traer los últimos 3 registros agrupado por algo específico

Entonces es obtener las ultimas 3 facturas de todos los productos facturados a todos los clientes???

Es decir, se arma un reporte completo o es a solicitud de codigo de cliente?
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 22/02/2007, 14:29
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
Re: De que forma puedo traer los últimos 3 registros agrupado por algo específico

Cita:
Es decir, se arma un reporte completo o es a solicitud de codigo de cliente?
Se armaría un reporte completo.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 26/02/2007, 10:09
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: De que forma puedo traer los últimos 3 registros agrupado por algo específico

No es un query demasiado pesado, además de que si, la manera en que lo planteas es lo que tienes que hacer.

Solo asegurate que el tema de los índices esté bien cubierto, sobre todo en los campos Facturas.CodCliente, FacturasDetalle.CodProducto, Facturas.NoFactura y FacturasDetalle. NoFactura
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 18/10/2010, 10:32
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Exclamación Respuesta: De que forma puedo traer los últimos 3 registros agrupado por algo específ

Yo tengo un caso similar, pero no he podido obtener el código correcto, pero igual a tí te sirve el código que tengo, si encuentras como funciona correcto avisame :)

Mira este es el còdigo que mejor me ha funcionado:

Cita:
select folio, articulo, descripcionarticulo,
precio, fecha, documento
from (
select ts.folio, ts.articulo, ts.descripcionarticulo, ts.precio,
row_number() over (partition by ts.articulo, st.fecha
order by st.documento desc) x, st.fecha, st.documento
from entradadetalle ts, entradaencabezado st
where st.folio=ts.folio and st.documento='ECPAM') T2
where x < 4
order by articulo desc, fecha desc, folio desc
Este fué mi caso:
[URL="http://www.forosdelweb.com/f87/problemas-con-cursor-850434/"]http://www.forosdelweb.com/f87/problemas-con-cursor-850434/[/URL]

Suerte!

Última edición por Inicia; 18/10/2010 a las 10:35 Razón: El hipervínculo no aparecio correcto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:55.