![]() |
Se puede Combinar Top, SUM, GRoup
Hola compañeros:
Espero puedas darme una manita: Manejo Delphi 7 y Tablas Paradox Necesito obtener los 10 Mejores Clientes de la empresa durante un periodo, tengo el siguiente codigo pero me da un error "When GROUP BY EXIST, every simple field in projectors must be in Group BY" Mi tabla Ventas, tiene los siguientes campos: Id_Cliente, Fecha, Subtotal, Iva, Código SQL [-] Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select Sum (Ventas.Subtotal) as VentasTop, Ventas.Id_Cliente, Ventas.Fecha'); Query1.SQL.Add('FROM Ventas INNER JOIN Clientes ON Ventas.Id_Cliente = Clientes.Clave'); Query1.SQL.Add('where fecha >= :fechav AND fecha <= :fechah'); Query1.SQL.Add('GROUP BY Ventas.Id_Cliente'); Query1.ParamByNAme('fechav').AsDate := Fecha1; Query1.ParamByNAme('fechah').AsDate := Fecha2; Query1.Open;; Ademàs queno se donde colocar el TOP 10. Espero alguien me de una manita. Gracias a todos |
te falta agregar "Ventas.Fecha" a la clausula group by, sin embargo este campo a mi juicio debe quedar fuera por una simple razon, quieres obtener los 10 mejores clientes en un tiempo determinado, digamos 1 mes, 1 semana o lo que sea, pero si usas el campo fecha, tienes que agregarlo a la clausula group by por lo tanto solo te sumaria las ventas de esa fecha, las de 1 dia despues serian otra suma...
|
Prueba esto, tal cual
Pasa del top 10, te saldrán ordenados de mayor a menor en la suma de ventas. Para qué vas a quedarte con 10 si puedes ver todos. Si no funciona prueba con 'ORDER BY 2 DESC' ( ordeno descendentemente por el 2º campo). En el ejemplo que te pondo estoy suponiendo que en la tabla clientes tienes un campo "nombre", porque si vas a visualizar el idcliente no tiene sentido que incluyas dos tablas. Suerte. Un saludo |
La franja horaria es GMT +2. Ahora son las 10:06:47. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi