none
Agrupar resultados de consulta mediante 2 criterios, ayuda RRS feed

  • Pregunta

  • Buenos dias, mi nombre es Matias, hace relativamente poco comence a programar en C# y SQL Server 2014, estoy desarrollando un programa estadistico de ventas de almacenes el cual me trae en una vista las sucursales, que producto vendio cada una, que cantidad y en que unidad de medida (envoltorios, gramos, kilos, unidades, etc)

    cada sucursal lo registra segun esas unidades de medida y al traer la vista me arroja este resultado (ejemplo)

    sucursal denominacion cantidad unidad de medida
    almacen 1 azucar 50 gramos
    almacen 1 yerba 1 kilos
    almacen 1 azucar 50 gramos
    almacen 1 edulcorante 1 envoltorios
    almacen 1 caldo gallina 5 cubos
    almacen 1 hojalillos 5 unidades
    almacen 1 caldo gallina 20 cubos
    almacen 46 azucar 3 envoltorios
    almacen 46 azucar 35 gramos
    almacen 46 yerba 10 envoltorios
    almacen 46 caldo gallina 8 cubos
    almacen 46 hojalillos 5 unidades
    almacen 46 hojalillos 5 unidades
    almacen 5 yerba 500 gramos
    almacen 5 hojalillos 5 unidades
    almacen 5 azucar 20 gramos
    almacen 5 hojalillos 5 unidades


    lo que necesito es que me agrupe segun productos y unidades de medida, sumando las cantidades de forma automatica, como por ejemplo almacen 1 - azucar - 100 - gramos, etc.

    sucursal denominacion cantidad unidad de medida
    almacen 1 azucar 100 gramos
    almacen 1 caldo gallina 25 cubos
    almacen 1 edulcorante 1 envoltorios
    almacen 1 hojalillos 5 unidades
    almacen 1 yerba 1 kilos
    almacen 46 azucar 3 envoltorios
    almacen 46 azucar 35 gramos
    almacen 46 caldo gallina 8 cubos
    almacen 46 hojalillos 10 unidades
    almacen 46 yerba 10 envoltorios
    almacen 5 yerba 500 gramos
    almacen 5 hojalillos 5 unidades
    almacen 5 azucar 20 gramos
    almacen 5 hojalillos 5 unidades


    hasta el momento no logro lograrlo, lo ultimo que se me ocurrio hacer es lo siguiente

    SELECT Sucursal, Producto, Cantidad, UnidadMedida FROM VistaTotalProductosVendidos WHERE Fecha between '2017/12/5' and '2017/12/15' --la vista ademas trae las fechas de cuando se vendio cada producto GROUP BY UnidadMedidaSucursal, Cantidad, Fecha, Producto

    ORDER BY Sucursal;

    El GROUP BY si o si me pide que nombre todas las columnas, esto me esta anclando y no puedo continuar con el desarrollo, si alguien puede iluminarme con su sabiduria seria optimo y desde ya agradecido por la buena predisposicion de las personas del foro, siempre que tuve una duda recaia aqui y lo pude resolver

    lunes, 7 de mayo de 2018 11:34

Respuestas

  • Hola Tommasi Matias:

    Lo que necesitas es SUM(UNIDADMEDIDA) y sacarlo del group by, pero tienes un pequeño problema de planteamiento de la información, los numeros son numeros y no deben de mezclarse con letras. O mejor dicho, para que quede claro, una cosa es la cantidad, y otra la unidad de medida. Esto en base de datos lo tienes así, o lo juntas en la consulta. Si lo tienes así no esta bien planteado.Si lo mezclas en la vista para traer los resultados, pues solo tienes que traer las columnas separadas y sumar por la consulta de la cantidad.

    Un saludo

    • Marcado como respuesta Tommasi Matias lunes, 7 de mayo de 2018 12:20
    lunes, 7 de mayo de 2018 11:57
  • Matias, las columnas que indican el grupo (sucursal, producto, UnidadMedida) deben formar parte de la clausula GROUP BY, el resto debera participar en alguna funcion de agregacion (MIN/MAX/SUM/COUNT, etc.).

    SELECT
        Sucursal,
        Producto,
        SUM(Cantidad) AS Total_Cantidad,
        UnidadMedida
    FROM
        VistaTotalProductosVendidos
    WHERE
        Fecha BETWEEN '2017/12/5' 
        AND '2017/12/15'
    GROUP BY
        Sucursal,
        Producto,
        UnidadMedida
    ORDER BY
        Sucursal,
        Producto,
        UnidadMedida;
    La clausula ORDER BY es opcional y se usa en este caso para dar un orden a los resultados.



    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta Tommasi Matias lunes, 7 de mayo de 2018 12:20
    lunes, 7 de mayo de 2018 11:59

Todas las respuestas

  • Hola Tommasi Matias:

    Lo que necesitas es SUM(UNIDADMEDIDA) y sacarlo del group by, pero tienes un pequeño problema de planteamiento de la información, los numeros son numeros y no deben de mezclarse con letras. O mejor dicho, para que quede claro, una cosa es la cantidad, y otra la unidad de medida. Esto en base de datos lo tienes así, o lo juntas en la consulta. Si lo tienes así no esta bien planteado.Si lo mezclas en la vista para traer los resultados, pues solo tienes que traer las columnas separadas y sumar por la consulta de la cantidad.

    Un saludo

    • Marcado como respuesta Tommasi Matias lunes, 7 de mayo de 2018 12:20
    lunes, 7 de mayo de 2018 11:57
  • Matias, las columnas que indican el grupo (sucursal, producto, UnidadMedida) deben formar parte de la clausula GROUP BY, el resto debera participar en alguna funcion de agregacion (MIN/MAX/SUM/COUNT, etc.).

    SELECT
        Sucursal,
        Producto,
        SUM(Cantidad) AS Total_Cantidad,
        UnidadMedida
    FROM
        VistaTotalProductosVendidos
    WHERE
        Fecha BETWEEN '2017/12/5' 
        AND '2017/12/15'
    GROUP BY
        Sucursal,
        Producto,
        UnidadMedida
    ORDER BY
        Sucursal,
        Producto,
        UnidadMedida;
    La clausula ORDER BY es opcional y se usa en este caso para dar un orden a los resultados.



    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta Tommasi Matias lunes, 7 de mayo de 2018 12:20
    lunes, 7 de mayo de 2018 11:59
  • Buenos dias Javi Fernandez y Hunchback, ambas respuestas me ampliaron los conceptos que tenia y solucionaron mi problema.

    muchisimas gracias por la respuesta y por ser tan inmediata

    Saludos Cordiales
    lunes, 7 de mayo de 2018 12:23