none
group by RRS feed

  • Pregunta

  • hola foro:

    tengo una quey  simple sql con pocos campos en el select  y que utiliza el group by al final para calcular

    A esa query tengo que agregarle mas campos en el select , que va a surgir de inner join con otras tablas y el group by se me hace  muy  largo  , queria saber si que otra opcion tengo para no poner todos los campos del select en el group by y que se vuelva lenta la query

    query sencilla inicial:

    select 
    cli.fECHA,
    Cantidad = SUM(cli.Cantidad), 

    FROM CLIENTES
    Inner join grupo

    group by grupo.Descripcion, cli.fecha

    bosquejo query con mas campos 

                 

    select 

    cli.fECHA,
    Cantidad = SUM(cli.Cantidad), 

           Domicilio.calle,

                          Iva.detalle

                                

    FROM CLIENTES

    inner join grupo...

    inner join domicilio

    inner join iva 

    inner .....

    group by , cli.fecha ....., ,campoiva ect.

    gracias





    • Editado Inovador2015 miércoles, 6 de septiembre de 2017 11:33
    miércoles, 6 de septiembre de 2017 5:02

Respuestas

  • Depende de las características de los datos por los que agrupas. Por ejemplo, si añades el cli.Fecha en el group by y hay distintas fechas en cada grupo, te saldrá una nueva línea por cada fecha del grupo. Pero si sabes de antemano que dadas las agrupaciones que estás haciendo solo existe una única fecha en cada uno de los grupos que quieres formar, entonces puedes ahorrarte el campo cli.Fecha en el GROUP BY recurriendo al truco de poner MAX(cli.Fecha) en la lista de selección. Dado que solo esperas una única fecha en cada grupo, el MAX de esa única fecha será la misma fecha, y la consulta arrojará los resultados deseados sin necesidad de haber agrupado por ese campo.
    • Marcado como respuesta Inovador2015 miércoles, 6 de septiembre de 2017 11:31
    miércoles, 6 de septiembre de 2017 6:40