none
sumar campos en report viwer pero solo los que están check 0 en un resultado y los que esta 1 en otro RRS feed

  • Pregunta

  • buenas noches me pueden ayudar con este problema tengo una base de datos sql y quiero hacer un report viwer con los siguientes datos del valor total quiero sumar solo los que esten check 0 en un resultado y los que esten check 1 en otro resultado estoy trabajando con visual studio y otra pregunta como hago para que el valor total salga con dos  decimales en la tabla gracias por la ayuda
    • Editado Willian61x domingo, 2 de julio de 2017 6:46
    domingo, 2 de julio de 2017 6:42

Respuestas

  • Es posible sumarizar sobre el conjunto que retorna la consulta

    SELECT
        SUM(CASE d.Check1 WHEN 1 THEN d.Cantidad * d.Valor_Unitario END) AS TC1,
        SUM(CASE d.Check1 WHEN 0 THEN d.Cantidad * d.Valor_Unitario END) AS TC0
    FROM detalle_Venta d
    WHERE d.id_Venta = 6;
    GO



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Augusto1982 lunes, 3 de julio de 2017 2:52
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 2:48
  • ¿Una variable?, sí, pero una variable de intervalo. Pero para que no te confundas es mejor si lo entiendes como un sobrenombre del identificador 'detalle_Venta', un nombre corto, un alias que identifica al objeto, que puede ser cualquier carácter o una cadena alfanumérica.

    Un alias aporta legibilidad al código, y evita la ambigüedad de nombres de columna si no se especifica el nombre de la tabla, para el caso puntual puedes no definir un alias o escribir el nombre de los objetos basado en dos partes:

    SELECT
        SUM(CASE Check1 WHEN 1 THEN Cantidad * Valor_Unitario END) AS TC1,
        SUM(CASE Check1 WHEN 0 THEN Cantidad * Valor_Unitario END) AS TC0
    FROM detalle_Venta
    WHERE id_Venta = 6;
    GO
    
    --O
    SELECT
        SUM(CASE detalle_Venta.Check1 WHEN 1 
    	   THEN detalle_Venta.Cantidad * detalle_Venta.Valor_Unitario END) AS TC1,
        SUM(CASE detalle_Venta.Check1 WHEN 0 
    	   THEN detalle_Venta.Cantidad * detalle_Venta.Valor_Unitario END) AS TC0
    FROM detalle_Venta
    WHERE detalle_Venta.id_Venta = 6;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Joyce_ACModerator lunes, 3 de julio de 2017 14:01
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 3:49
  • buenas tardes amigo gracias de antemano pero me da errores la tabla ya la tengo creada y trato de implementarlo a mi tabla pero no funciona

    Willian61x

    Hola, que errores obtienes?, puedes postear tu codigo?

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 1:04
  • Similar al comentario de Augusto pero en vb

      DatAdapter.Fill(Tabla)
            OleConexion.Close()
    
            Dim a As Double = 0
            Dim d As Double = 0
            For Each row As DataRow In Tabla.Rows
                If Convert.ToString(row(6)) = 1 Then
                    a = a + Convert.ToString((row(5)))
                Else
                    d = d + Convert.ToString((row(5)))
                End If
            Next
            a = Format(a, "#0.00")
            d = Format(d, "#0.00")
            MsgBox("Checked 1 = " & a & "  Chequed 0 = " & d)
    
    
    
        End Sub

    Vuelcas los datos en una tabla y de alli clasificas

    Saludos

    PD tienes dos preguntas abiertas del mismo tema por favor elimina una


    • Editado Marcelo PF domingo, 2 de julio de 2017 18:55
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    domingo, 2 de julio de 2017 18:51
  • Gracias amigo lo estaba enviando mal el id_detalle venta perdon, pero me muestra de toda la tabla el resultado solo quiero el dato de un id en este caso el id_venta que seria el 6 y con el where id_venta = 6 a y por cierto la columna V_total es una columna que se multiplica la Columna cantidad y la columna valor_unitario no esta declarada en la tabla

    me sale error 

    Mens. 209, Nivel 16, Estado 1, Línea 35
    El nombre de columna 'id_venta' es ambiguo.

    el codigo le puse asi 

    SELECT 
    SUM(CASE WHEN T1.Check1 = 1 THEN ISNULL(T1.Valor_total,0) END) AS TOTAL_1,
    SUM(CASE WHEN T0.Check1 = 0 THEN ISNULL(T0.Valor_total,0) END) AS TOTAL_0

    FROM detalle_Venta T1

    LEFT JOIN detalle_Venta T0 

    ON T1.id_Detalle=T0.id_Detalle  
    where id_venta = 6


    Willian61x




    • Editado Willian61x lunes, 3 de julio de 2017 2:23
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 2:12
  • Muchas gracias amigo una preunta la 'd' de donde sale no estoy muy seguro es una variable 

    y  perdon por ser tan pesado pero no tengo mucha idea en esto de base de datos 


    Willian61x

    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 3:34

Todas las respuestas

  • porfavor alguien que me ayude tengo una tabla en sql y mi aplicacion esta en visual studio quiero mostrar los report viwer suma de columna pero solo de la columna check suma los que tienen 0 se suma la columna Valor total, y los que estan con 1 suma otro resultado ejemplo: los valores 0 seria 3.60 los valores de 1 seria 11.90
    domingo, 2 de julio de 2017 18:02
  • Hola, podrías probar con algo como

    QUERY

    DECLARE @MiTabla TABLE 
    (
    idDetalle Int,
    IdVenta   Int,
    Cantidad  Decimal (10,2),
    Descripcion Varchar(100),
    Valor_Unitario Decimal(10,2),
    Total Decimal(10,4),
    Check1   Int
    )
    
    Insert Into @MiTabla values(1003,6,1.00,'eeeee' ,3.00 ,3.0000,1)
    Insert Into @MiTabla values(1004,6,1.00,'fffff' ,1.50 ,1.5000,1)
    Insert Into @MiTabla values(1005,6,1.00,'eeefff',1.45 ,1.4500,1)
    Insert Into @MiTabla values(1006,6,1.00,'eeefff',1.80 ,1.8000,0)
    Insert Into @MiTabla values(1007,6,1.00,'eeeee' ,3.00 ,3.0000,0)
    
    
    SELECT 
    SUM(CASE WHEN T1.Check1 = 1 THEN ISNULL(T1.Total,0) END) AS TOTAL_1,
    SUM(CASE WHEN T0.Check1 = 0 THEN ISNULL(T0.Total,0) END) AS TOTAL_0
    FROM @MiTabla T1
    LEFT JOIN @MiTabla T0 
    ON T1.idDetalle=T0.idDetalle

    RESULTADOS


    Para el tema de los decimales del campo de tu tabla podrías especificar de que tipo es,si es decimal con que precisión de decimales, también podrías intentar usar la función ROUND


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    • Editado Augusto1982 domingo, 2 de julio de 2017 18:38
    domingo, 2 de julio de 2017 18:15
  • Similar al comentario de Augusto pero en vb

      DatAdapter.Fill(Tabla)
            OleConexion.Close()
    
            Dim a As Double = 0
            Dim d As Double = 0
            For Each row As DataRow In Tabla.Rows
                If Convert.ToString(row(6)) = 1 Then
                    a = a + Convert.ToString((row(5)))
                Else
                    d = d + Convert.ToString((row(5)))
                End If
            Next
            a = Format(a, "#0.00")
            d = Format(d, "#0.00")
            MsgBox("Checked 1 = " & a & "  Chequed 0 = " & d)
    
    
    
        End Sub

    Vuelcas los datos en una tabla y de alli clasificas

    Saludos

    PD tienes dos preguntas abiertas del mismo tema por favor elimina una


    • Editado Marcelo PF domingo, 2 de julio de 2017 18:55
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    domingo, 2 de julio de 2017 18:51
  • Hola, esta pregunta ya esta repetida, te sugiero revisar las sugerencias puestas en este otro hilo

    sumar campos en report viwer pero solo los que están check 0 en un resultado y los que esta 1 en otro


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    domingo, 2 de julio de 2017 20:56
  • buenas tardes amigo gracias de antemano pero me da errores la tabla ya la tengo creada y trato de implementarlo a mi tabla pero no funciona

    Willian61x

    lunes, 3 de julio de 2017 0:17
  • buenas tardes amigo gracias de antemano pero me da errores la tabla ya la tengo creada y trato de implementarlo a mi tabla pero no funciona

    Willian61x

    Hola, que errores obtienes?, puedes postear tu codigo?

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 1:04
  • Gracias amigo lo estaba enviando mal el id_detalle venta perdon, pero me muestra de toda la tabla el resultado solo quiero el dato de un id en este caso el id_venta que seria el 6 y con el where id_venta = 6 a y por cierto la columna V_total es una columna que se multiplica la Columna cantidad y la columna valor_unitario no esta declarada en la tabla

    me sale error 

    Mens. 209, Nivel 16, Estado 1, Línea 35
    El nombre de columna 'id_venta' es ambiguo.

    el codigo le puse asi 

    SELECT 
    SUM(CASE WHEN T1.Check1 = 1 THEN ISNULL(T1.Valor_total,0) END) AS TOTAL_1,
    SUM(CASE WHEN T0.Check1 = 0 THEN ISNULL(T0.Valor_total,0) END) AS TOTAL_0

    FROM detalle_Venta T1

    LEFT JOIN detalle_Venta T0 

    ON T1.id_Detalle=T0.id_Detalle  
    where id_venta = 6


    Willian61x




    • Editado Willian61x lunes, 3 de julio de 2017 2:23
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 2:12
  • Es posible sumarizar sobre el conjunto que retorna la consulta

    SELECT
        SUM(CASE d.Check1 WHEN 1 THEN d.Cantidad * d.Valor_Unitario END) AS TC1,
        SUM(CASE d.Check1 WHEN 0 THEN d.Cantidad * d.Valor_Unitario END) AS TC0
    FROM detalle_Venta d
    WHERE d.id_Venta = 6;
    GO



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Augusto1982 lunes, 3 de julio de 2017 2:52
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 2:48
  • Muchas gracias amigo una preunta la 'd' de donde sale no estoy muy seguro es una variable 

    y  perdon por ser tan pesado pero no tengo mucha idea en esto de base de datos 


    Willian61x

    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 3:34
  • ¿Una variable?, sí, pero una variable de intervalo. Pero para que no te confundas es mejor si lo entiendes como un sobrenombre del identificador 'detalle_Venta', un nombre corto, un alias que identifica al objeto, que puede ser cualquier carácter o una cadena alfanumérica.

    Un alias aporta legibilidad al código, y evita la ambigüedad de nombres de columna si no se especifica el nombre de la tabla, para el caso puntual puedes no definir un alias o escribir el nombre de los objetos basado en dos partes:

    SELECT
        SUM(CASE Check1 WHEN 1 THEN Cantidad * Valor_Unitario END) AS TC1,
        SUM(CASE Check1 WHEN 0 THEN Cantidad * Valor_Unitario END) AS TC0
    FROM detalle_Venta
    WHERE id_Venta = 6;
    GO
    
    --O
    SELECT
        SUM(CASE detalle_Venta.Check1 WHEN 1 
    	   THEN detalle_Venta.Cantidad * detalle_Venta.Valor_Unitario END) AS TC1,
        SUM(CASE detalle_Venta.Check1 WHEN 0 
    	   THEN detalle_Venta.Cantidad * detalle_Venta.Valor_Unitario END) AS TC0
    FROM detalle_Venta
    WHERE detalle_Venta.id_Venta = 6;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Joyce_ACModerator lunes, 3 de julio de 2017 14:01
    • Marcado como respuesta Willian61x lunes, 3 de julio de 2017 15:24
    lunes, 3 de julio de 2017 3:49