none
Join agrupado con suma

    Question

  • Hola. Tengo la siguiente consulta:


    estos trabajando con estas tablas

    CYN_PRODUCTO
    PRI KEY Codigo int
    Descripcion varchar(50)
    PrecioDeCompra decimal(6, 2)
    PrecioDeVenta decimal(6, 2)
    CYN_FACTURAS_DETALLE
    Codigo producto int  es el codigo de producto, un FK a PRODUCTO
    Cantidad smallint  
    [Precio Venta] decimal(6, 2)  
    NumeroFactura int es el numero de factura que le corresponde al detalle, es un FK a FACTURA
    CYN_CLIENTES
    Apellido varchar(50) Unchecked
    PRI KEY Documento int Unchecked
    Nombre varchar(50) Unchecked
    CYN_FACTURA
    Tipo char(1)
    PRI Key Numero factura int
    [Fecha de Emision] date
    Cliente int  es el documento del cliente (un FK a cliente)


    y la consigna es : "Listar por cada cliente, la cantidad vendida de cada producto ".

    No logro agrupar correctamente, o no se si es que deberia hacerlo con una subconsulta. La idea es que quede una tabla con el el nombre de cada cliente y el la cantidad de cada producto que compraron.

    Agrego el pedazo de codigo con el que estuve trabajando, agradezco cualquier ayuda.

    SELECT [Tipo Doc]
          ,[CYN_CLIENTE].[Documento]
          ,[CYN_CLIENTE].[Apellido]
          ,[CYN_CLIENTE].[Nombre]
      ,[CYN_PRODUCTO].[Codigo]
      ,[CYN_PRODUCTO].[Descripcion]
      ,[CYN_FACTURAS_DETALLE].[Cantidad]
      ,[CYN_FACTURAS].[numero]
          
      FROM [Capacitacion].[dbo].[CYN_CLIENTES]
      
     JOIN [Capacitacion].[dbo].[CYN_FACTURAS]
      ON [Capacitacion].[dbo].[CYN_FACTURAS].[Cliente] = [Capacitacion].[dbo].[CYN_CLIENTES].[Documento]
      JOIN [Capacitacion].[dbo].[CYN_FACTURAS_DETALLE]
      ON [CYN_FACTURAS_DETALLE].[Numero] = [CYN_FACTURAS].[Numero]
      
     JOIN  [Capacitacion].[dbo].[CYN_PRODUCTO]

     ON [CYN_PRODUCTO].[Codigo]= [CYN_FACTURAS_DETALLE].[Codigo]

    GROUP BY [CYN_PRODUCTO].[Codigo]
            
            ,[Documento]
            ,[Apellido]
            ,[Nombre]
                    
            ,[CYN_PRODUCTO].[Descripcion]
            ,[CYN_FACTURAS].[numero]
            
            ,[CYN_FACTURAS_DETALLE].[Cantidad]
            
            
            
            
            
            ORDER BY SUM([CYN_FACTURAS_DETALLE].[Cantidad]) ASC


    Friday, July 13, 2012 6:57 PM

Answers

  • Si necesitas la suma de las cantidades del producto, necesitas hacer la suma en el SELECT y no agrupar por Cantidad. Algo asi:

    SELECT 
          [CYN_CLIENTE].[Documento]
          ,[CYN_CLIENTE].[Apellido]
          ,[CYN_CLIENTE].[Nombre]
      ,[CYN_PRODUCTO].[Codigo]
      ,[CYN_PRODUCTO].[Descripcion]
      ,SUM([CYN_FACTURAS_DETALLE].[Cantidad])
      ,[CYN_FACTURAS].[numero]
          
      FROM [Capacitacion].[dbo].[CYN_CLIENTES]
      
     JOIN [Capacitacion].[dbo].[CYN_FACTURAS]
      ON [Capacitacion].[dbo].[CYN_FACTURAS].[Cliente] = [Capacitacion].[dbo].[CYN_CLIENTES].[Documento]
      JOIN [Capacitacion].[dbo].[CYN_FACTURAS_DETALLE]
      ON [CYN_FACTURAS_DETALLE].[Numero] = [CYN_FACTURAS].[Numero]
      
     JOIN  [Capacitacion].[dbo].[CYN_PRODUCTO]
    
     ON [CYN_PRODUCTO].[Codigo]= [CYN_FACTURAS_DETALLE].[Codigo]
    
    GROUP BY 
            
            ,[Documento]
            ,[Apellido]
            ,[Nombre]
            ,[Codigo]   
            ,[CYN_PRODUCTO].[Descripcion]
            ,[CYN_FACTURAS].[numero]
            
    ORDER BY SUM([CYN_FACTURAS_DETALLE].[Cantidad]) ASC
    


     Saludos,

    Monica


    This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.

    • Marked as answer by Supernovac Tuesday, July 17, 2012 1:56 PM
    Friday, July 13, 2012 8:53 PM
  • Eso es porque estas incluyendo el numero de factura en la agrupacion. Si no quieres ver cada factura por separado y solamente la suma de todas las cantidades vendidas tienes que eliminar el numero de factura del grupo y del SELECT.

    Saludos,

    Monica


    This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.

    • Marked as answer by Supernovac Tuesday, July 17, 2012 1:56 PM
    Monday, July 16, 2012 3:43 PM

All replies

  • Si necesitas la suma de las cantidades del producto, necesitas hacer la suma en el SELECT y no agrupar por Cantidad. Algo asi:

    SELECT 
          [CYN_CLIENTE].[Documento]
          ,[CYN_CLIENTE].[Apellido]
          ,[CYN_CLIENTE].[Nombre]
      ,[CYN_PRODUCTO].[Codigo]
      ,[CYN_PRODUCTO].[Descripcion]
      ,SUM([CYN_FACTURAS_DETALLE].[Cantidad])
      ,[CYN_FACTURAS].[numero]
          
      FROM [Capacitacion].[dbo].[CYN_CLIENTES]
      
     JOIN [Capacitacion].[dbo].[CYN_FACTURAS]
      ON [Capacitacion].[dbo].[CYN_FACTURAS].[Cliente] = [Capacitacion].[dbo].[CYN_CLIENTES].[Documento]
      JOIN [Capacitacion].[dbo].[CYN_FACTURAS_DETALLE]
      ON [CYN_FACTURAS_DETALLE].[Numero] = [CYN_FACTURAS].[Numero]
      
     JOIN  [Capacitacion].[dbo].[CYN_PRODUCTO]
    
     ON [CYN_PRODUCTO].[Codigo]= [CYN_FACTURAS_DETALLE].[Codigo]
    
    GROUP BY 
            
            ,[Documento]
            ,[Apellido]
            ,[Nombre]
            ,[Codigo]   
            ,[CYN_PRODUCTO].[Descripcion]
            ,[CYN_FACTURAS].[numero]
            
    ORDER BY SUM([CYN_FACTURAS_DETALLE].[Cantidad]) ASC
    


     Saludos,

    Monica


    This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.

    • Marked as answer by Supernovac Tuesday, July 17, 2012 1:56 PM
    Friday, July 13, 2012 8:53 PM
  • intente con eso pero no sirvio, me repite el producto si aparece en mas de alguna factura. La idea es que el producto aparezca una sola vez y sume la cantidad de veces que aparece en todas las facturas a nombre de ese cliente.

    Gracias de todos modos por tomarte la molestia de responder

    Saludos!

    Monday, July 16, 2012 12:30 PM
  • Eso es porque estas incluyendo el numero de factura en la agrupacion. Si no quieres ver cada factura por separado y solamente la suma de todas las cantidades vendidas tienes que eliminar el numero de factura del grupo y del SELECT.

    Saludos,

    Monica


    This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.

    • Marked as answer by Supernovac Tuesday, July 17, 2012 1:56 PM
    Monday, July 16, 2012 3:43 PM
  • gracias! ahora si funciona, muchas gracias
    Tuesday, July 17, 2012 1:55 PM