none
Query en DATASET RRS feed

  • Pregunta

  • buenos días,

    tengo una consulta dentro de un dataset que va de esta manera:

    SELECT        ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                             ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE,
                             SUM(DETALLE_FACTURA.PRECIO) as PRECIO
    FROM            ENCABEZADO_FACTURA INNER JOIN
                             EXPEDIENTES ON ENCABEZADO_FACTURA.COD_EXPEDIENTE = EXPEDIENTES.COD_EXPEDIENTE INNER JOIN
                             DESCUENTOS ON ENCABEZADO_FACTURA.COD_DESCUENTO = DESCUENTOS.COD_DESCUENTO INNER JOIN
                             DETALLE_FACTURA ON ENCABEZADO_FACTURA.COD_FACTURA = DETALLE_FACTURA.COD_FACTURA

    lo que quiero es que me muestre la suma de los precios que se encuentran en el detalle de la factura, al ejecutar este query me lanza este mensaje:

    Como modificar el query con un GROUP BY?


    carlos márquez

    • Cambiado Enrique M. Montejo martes, 29 de mayo de 2012 11:52 acceso a datos (De:Lenguaje VB.NET)
    jueves, 24 de mayo de 2012 13:08

Todas las respuestas

  • como dice alli usa el GROUP BY

    SELECT        ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                             ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE,
                             SUM(DETALLE_FACTURA.PRECIO) as PRECIO
    FROM            ENCABEZADO_FACTURA INNER JOIN
                             EXPEDIENTES ON ENCABEZADO_FACTURA.COD_EXPEDIENTE = EXPEDIENTES.COD_EXPEDIENTE INNER JOIN
                             DESCUENTOS ON ENCABEZADO_FACTURA.COD_DESCUENTO = DESCUENTOS.COD_DESCUENTO INNER JOIN
                             DETALLE_FACTURA ON ENCABEZADO_FACTURA.COD_FACTURA = DETALLE_FACTURA.COD_FACTURA

    GROUP BY ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                             ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE

    o sea todos los campos que no estan en una funciona de agregacion ay sea SUM, COUNT, AVG, etc

    van definidos en el grou by


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 24 de mayo de 2012 13:12
  • SELECT        ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                             ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE,
                             SUM(DETALLE_FACTURA.PRECIO)
    FROM            ENCABEZADO_FACTURA INNER JOIN
                             EXPEDIENTES ON ENCABEZADO_FACTURA.COD_EXPEDIENTE = EXPEDIENTES.COD_EXPEDIENTE INNER JOIN
                             DESCUENTOS ON ENCABEZADO_FACTURA.COD_DESCUENTO = DESCUENTOS.COD_DESCUENTO INNER JOIN
                             DETALLE_FACTURA ON ENCABEZADO_FACTURA.COD_FACTURA = DETALLE_FACTURA.COD_FACTURA
    GROUP BY ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                              ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                              ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE

    Al ejecutarlo de esta manera, me lanza un error en el ultimo AS, en DESCUENTOS.NOMBRE AS DESCUENTO, un error de sintaxis


    carlos márquez

    jueves, 24 de mayo de 2012 13:19
  • no vi que habia un AS en el group by

    GROUP BY ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                              ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                              ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE, DESCUENTOS.PORCENTAJE

    solo lo deberias quitar


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 24 de mayo de 2012 17:28
  • Si, Leandro, ese era el problema, el AS, hasta ahora todo bien quedo así:

    SELECT        ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA,
                             ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE AS DESCUENTO, DESCUENTOS.PORCENTAJE,
                             SUM(DETALLE_FACTURA.PRECIO) as TOTAL
    FROM            ENCABEZADO_FACTURA left JOIN
                             EXPEDIENTES ON ENCABEZADO_FACTURA.COD_EXPEDIENTE = EXPEDIENTES.COD_EXPEDIENTE left JOIN
                             DESCUENTOS ON ENCABEZADO_FACTURA.COD_DESCUENTO = DESCUENTOS.COD_DESCUENTO left JOIN
                             DETALLE_FACTURA ON ENCABEZADO_FACTURA.COD_FACTURA = DETALLE_FACTURA.COD_FACTURA
    GROUP BY ENCABEZADO_FACTURA.COD_FACTURA, ENCABEZADO_FACTURA.COD_EXPEDIENTE, ENCABEZADO_FACTURA.FECHA, ENCABEZADO_FACTURA.COD_DESCUENTO, ENCABEZADO_FACTURA.ESTADO, ENCABEZADO_FACTURA.ESTADO_OT, ENCABEZADO_FACTURA.USUARIO,
                             ENCABEZADO_FACTURA.FH_EMITIDA, EXPEDIENTES.NOMBRE, DESCUENTOS.NOMBRE, DESCUENTOS.PORCENTAJE

    Ahora lo que he intentado hacer y no he conseguido es que el valor de la columna DESCUENTOS.PORCENTAJE lo divida entre 100 y luego lo multiplique por SUM(DETALLE_FACTURA.PRECIO) y ese resultado se lo reste tambien a la columna SUM(DETALLE_FACTURA.PRECIO) y asi sacar el total neto 


    carlos márquez

    jueves, 24 de mayo de 2012 20:11