none
Sumar resultados de un query de Sql Server 2008 RRS feed

  • Pregunta

  • Buen dia, quiero sumar los resultados de un stored procedure por cada usuario, mi stored procedure es el siguiente:

    USE [db_soldadura]
    GO
    /****** Object:  StoredProcedure [dbo].[MandaGrafica]    Script Date: 6/17/2013 10:14:06 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- Batch submitted through debugger: SQLQuery5.sql|0|0|C:\Users\lopezd1\AppData\Local\Temp\~vsBD99.sql
    --ST PROCEDURE ,CreaFechas
    ALTER PROCEDURE [dbo].[MandaGrafica]
    @fechaMenor datetime,
    @fechaMayor datetime
    AS

    select u.id_usuario, u.nombre_usuario
    , ISNULL(totalEscaneos,0) as totalEscaneos
    , ISNULl(totalEscaneosSalida,0) as totalEscaneosSalida
    , ISNULl(totalEscaneosSinRegistro,0) as totalEscaneosSinRegistro
    , ISNULl(totalEscaneosSinRegistroSalidaRefri,0) as totalEscaneosSinRegistroSalidaRefri
    , ISNULl(totalEscaneosSinRegistroFifo,0) as totalEscaneosSinRegistroFifo
    , ISNULl(totalEscaneosSinReposo,0) as totalEscaneosSinReposo
    , ISNULL(totalEscaneosEntradaFifo,0) as totalEscaneosEntradaFifo
    , ISNULL(totalEscaneosSalidaFifo,0) as totalEscaneosSalidaFifo
    from tb_usuarios u
    left join (
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneos
     FROM tb_escaneos WHERE   Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor  AND @fechaMayor AND fifo is null
     GROUP BY id_usuario
    ) e on u.id_usuario = e.id_usuario
    left join (
     SELECT  id_usuario , SUM( num_escaneos ) as totalEscaneosSalida
     FROM tb_escaneosSalida WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo is null
     GROUP BY id_usuario
    ) es on u.id_usuario = es.id_usuario
    left join (
     SELECT  id_usuario , SUM( sin_registroTotal ) as totalEscaneosSinRegistro
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario
    ) et on u.id_usuario = et.id_usuario
    left join (
     SELECT  id_usuario , SUM( sin_registroSalidaRefri  ) as totalEscaneosSinRegistroSalidaRefri
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario
    ) ete on u.id_usuario = ete.id_usuario

    left join (
     SELECT  id_usuario , SUM( sin_registroFifo  ) as totalEscaneosSinRegistroFifo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario
    ) ele on u.id_usuario = ele.id_usuario

    left join (
     SELECT  id_usuario , SUM( no_cumplioReposo   ) as totalEscaneosSinReposo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario
    ) el on u.id_usuario = el.id_usuario
    left join (
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosEntradaFifo
     FROM tb_escaneos WHERE Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario
    ) epe on u.id_usuario = epe.id_usuario
    left join (
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosSalidaFifo
     FROM tb_escaneosSalida  WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario
    ) eper on u.id_usuario = eper.id_usuario

     

     Y me da el siguiente resultado:

     Si pueden Observar la ultima columna del resultado esta editado, pues es lo que quiero conseguir, sumar los resultados de cada regitro por cada usuario soy nuevo en SQL Server, de antemano muchas gracias

    lunes, 17 de junio de 2013 15:21

Respuestas

  • Esto es lo que buscas?

    select u.id_usuario, u.nombre_usuario 
    , ISNULL(totalEscaneos,0) as totalEscaneos
    , ISNULl(totalEscaneosSalida,0) as totalEscaneosSalida
    , ISNULl(totalEscaneosSinRegistro,0) as totalEscaneosSinRegistro
    , ISNULl(totalEscaneosSinRegistroSalidaRefri,0) as totalEscaneosSinRegistroSalidaRefri
    , ISNULl(totalEscaneosSinRegistroFifo,0) as totalEscaneosSinRegistroFifo
    , ISNULl(totalEscaneosSinReposo,0) as totalEscaneosSinReposo
    , ISNULL(totalEscaneosEntradaFifo,0) as totalEscaneosEntradaFifo
    , ISNULL(totalEscaneosSalidaFifo,0) as totalEscaneosSalidaFifo
    ,  ISNULL(totalEscaneos,0) +
     ISNULl(totalEscaneosSalida,0) +
     ISNULl(totalEscaneosSinRegistro,0) +
     ISNULl(totalEscaneosSinRegistroSalidaRefri,0) +
     ISNULl(totalEscaneosSinRegistroFifo,0) +
     ISNULl(totalEscaneosSinReposo,0) +
     ISNULL(totalEscaneosEntradaFifo,0) +
     ISNULL(totalEscaneosSalidaFifo,0) as Total
    from tb_usuarios u
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneos 
     FROM tb_escaneos WHERE   Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor  AND @fechaMayor AND fifo is null 
     GROUP BY id_usuario 
    ) e on u.id_usuario = e.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( num_escaneos ) as totalEscaneosSalida 
     FROM tb_escaneosSalida WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo is null
     GROUP BY id_usuario 
    ) es on u.id_usuario = es.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( sin_registroTotal ) as totalEscaneosSinRegistro 
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) et on u.id_usuario = et.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( sin_registroSalidaRefri  ) as totalEscaneosSinRegistroSalidaRefri
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) ete on u.id_usuario = ete.id_usuario
    
    left join ( 
     SELECT  id_usuario , SUM( sin_registroFifo  ) as totalEscaneosSinRegistroFifo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) ele on u.id_usuario = ele.id_usuario
    
    left join ( 
     SELECT  id_usuario , SUM( no_cumplioReposo   ) as totalEscaneosSinReposo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) el on u.id_usuario = el.id_usuario 
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosEntradaFifo 
     FROM tb_escaneos WHERE Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario 
    ) epe on u.id_usuario = epe.id_usuario 
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosSalidaFifo 
     FROM tb_escaneosSalida  WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario 
    ) eper on u.id_usuario = eper.id_usuario


    lunes, 17 de junio de 2013 15:40

Todas las respuestas

  • Esto es lo que buscas?

    select u.id_usuario, u.nombre_usuario 
    , ISNULL(totalEscaneos,0) as totalEscaneos
    , ISNULl(totalEscaneosSalida,0) as totalEscaneosSalida
    , ISNULl(totalEscaneosSinRegistro,0) as totalEscaneosSinRegistro
    , ISNULl(totalEscaneosSinRegistroSalidaRefri,0) as totalEscaneosSinRegistroSalidaRefri
    , ISNULl(totalEscaneosSinRegistroFifo,0) as totalEscaneosSinRegistroFifo
    , ISNULl(totalEscaneosSinReposo,0) as totalEscaneosSinReposo
    , ISNULL(totalEscaneosEntradaFifo,0) as totalEscaneosEntradaFifo
    , ISNULL(totalEscaneosSalidaFifo,0) as totalEscaneosSalidaFifo
    ,  ISNULL(totalEscaneos,0) +
     ISNULl(totalEscaneosSalida,0) +
     ISNULl(totalEscaneosSinRegistro,0) +
     ISNULl(totalEscaneosSinRegistroSalidaRefri,0) +
     ISNULl(totalEscaneosSinRegistroFifo,0) +
     ISNULl(totalEscaneosSinReposo,0) +
     ISNULL(totalEscaneosEntradaFifo,0) +
     ISNULL(totalEscaneosSalidaFifo,0) as Total
    from tb_usuarios u
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneos 
     FROM tb_escaneos WHERE   Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor  AND @fechaMayor AND fifo is null 
     GROUP BY id_usuario 
    ) e on u.id_usuario = e.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( num_escaneos ) as totalEscaneosSalida 
     FROM tb_escaneosSalida WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo is null
     GROUP BY id_usuario 
    ) es on u.id_usuario = es.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( sin_registroTotal ) as totalEscaneosSinRegistro 
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) et on u.id_usuario = et.id_usuario 
    left join ( 
     SELECT  id_usuario , SUM( sin_registroSalidaRefri  ) as totalEscaneosSinRegistroSalidaRefri
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) ete on u.id_usuario = ete.id_usuario
    
    left join ( 
     SELECT  id_usuario , SUM( sin_registroFifo  ) as totalEscaneosSinRegistroFifo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) ele on u.id_usuario = ele.id_usuario
    
    left join ( 
     SELECT  id_usuario , SUM( no_cumplioReposo   ) as totalEscaneosSinReposo
     FROM tb_registros  WHERE Convert(Char(10), tb_registros  .fecha  , 101) between @fechaMenor AND @fechaMayor
     GROUP BY id_usuario 
    ) el on u.id_usuario = el.id_usuario 
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosEntradaFifo 
     FROM tb_escaneos WHERE Convert(Char(10), tb_escaneos.fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario 
    ) epe on u.id_usuario = epe.id_usuario 
    left join ( 
     SELECT id_usuario , SUM( num_escaneos ) as totalEscaneosSalidaFifo 
     FROM tb_escaneosSalida  WHERE Convert(Char(10), tb_escaneosSalida .fecha  , 101) between @fechaMenor AND @fechaMayor AND fifo = 1
     GROUP BY id_usuario 
    ) eper on u.id_usuario = eper.id_usuario


    lunes, 17 de junio de 2013 15:40
  • Es lo que buscaba Ronald funciono perfectamente, gracias!!!
    lunes, 17 de junio de 2013 15:52