none
duvida em uma triger RRS feed

  • Pergunta

  • tenho a triger abaixo:

    SELECT

     

    Identity(INT,1,1) As Posicao, TITULOS.CD_usuario_OPER As usuario,

     

    CAST(SUM(TITULOS.VLR_HONORARIOS) As INT) As ValorRecuperado

     

    Into RECUPERADO

     

    FROM TITULOS WHERE

    TITULOS

    .DT_PAGTO >= '2009-11-01'

     

    AND TITULOS.DT_PAGTO <= '2009-11-30'

     

    GROUP BY TITULOS.CD_usuario_OPER ORDER BY ValorRecuperado DESC

     

     



    porem agora preciso  somar o total da tabela REC_UNICO no campo CAST(SUM(rec_unico.VALOR_HONORARIOS) As INT) As ValorRecuperado ou seja, tenho que ler duas para que sejam somados os seus campos de honorarios e joguem na campo ValorRecuperado..

     

    teria que ser algo parecido com o abaixo
    SELECT

     

    Identity(INT,1,1) As Posicao, rec_unico.ATENDENTE As usuario,

     

    CAST(SUM(rec_unico.VALOR_HONORARIOS) As INT) As ValorRecuperado

     

    Into RECUPERADO

     

    FROM rec_unico WHERE

    rec_unico

    .DT_PAGTO >= '2009-11-01'

     

    AND rec_unico.DT_PAGTO <= '2009-11-30'

     

    GROUP BY rec_unico.ATENDENTE ORDER BY ValorRecuperado DESC


    Fernando da Costa
    quinta-feira, 19 de novembro de 2009 19:21

Respostas

  • Olá Fernando,

    Não sei como esta a estrutura das entidades, se existe algum relacionamento entre as entidade em questão, segue um exemplo que pode te ajudar.

    SET NOCOUNT ON

     

    -- ENTIDADE PESSOA

    DECLARE @Pessoa TABLE

          (

                 IdPessoa INT IDENTITY(1,1)

                      PRIMARY KEY

                ,NoPessoa VARCHAR(30)

                ,DaCadastro DATETIME

                      DEFAULT(GETDATE())                 

          )

     

    -- ENTIDADE REC_UNICO

    DECLARE @Rec_Unico TABLE

          (

                 Cd_Usuario INT

                      PRIMARY KEY

                ,Vlr_Honorario NUMERIC(5,2)  

          )

     

    -- ENTIDADE TITULOS

    DECLARE @Titulos TABLE

          (

                 Cd_Usuario_Oper INT

                      PRIMARY KEY

                ,Vlr_Honorario NUMERIC(5,2)                    

          )

     

    -- INSERINDO VALORES NA ENTIDADE PESSOA  

    INSERT @Pessoa(NoPessoa)

          VALUES('Heberton Melo')

    INSERT @Pessoa(NoPessoa)

          VALUES('Mario Andrade')

    INSERT @Pessoa(NoPessoa)

          VALUES('Charles de Freita')

    INSERT @Pessoa(NoPessoa)

          VALUES('Junior Galvão')

     

    -- INSERINDO AS PESSOAS NAS DUAS ENTIDADES

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(1, 200.00)

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(2, 100.00)

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(1, 200.00)

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(2, 300.00)

         

    -- INSERINDO AS PESSOAS EM UMA ÚNICA ENTIDADE

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(3, 250.00)

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(4, 550.00)

         

    -- CONSULTA

        SELECT NoPessoa AS [Nome],

               U.Vlr_Honorario AS [Único], T.Vlr_Honorario AS [Título],

               U.Vlr_Honorario + T.Vlr_Honorario AS [Soma Total]

          INTO #Recuperado

          FROM @Pessoa AS P

    INNER JOIN @Rec_Unico U

            ON P.IdPessoa = U.Cd_Usuario

    INNER JOIN @Titulos AS T

            ON U.Cd_Usuario = T.Cd_Usuario_Oper    

           

           

    -- RECUPERANDO A ENTIDADE TEMPORÁRIA

    SELECT *

      FROM #Recuperado

     
    Resultado.

    Nome               Único       Título              Soma Total

    -----------------  ----------- ---------------- ----------------------
    Heberton Melo   200.00     200.00           400.00

    Mario Andrade   100.00     300.00           400.00

     

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog:
    http://heberton-melo.spaces.live.com

    • Marcado como Resposta Fernanda Simões quarta-feira, 2 de dezembro de 2009 13:56
    segunda-feira, 23 de novembro de 2009 22:07

Todas as Respostas

  • tentei este comando mas os valores que retornam estao errados:

    SELECT

     

    Identity(INT,1,1) As Posicao, TITULOS.CD_usuario_OPER As usuario,

     

    (CAST(SUM(TITULOS.VLR_HONORARIOS) As INT) + ( select CAST(SUM(rec_unico.VALOR_HONORARIOS) As INT)

     

    from rec_unico,titulos WHERE

    rec_unico

    .DT_PAGTO >= '2009-11-01'

     

    AND rec_unico.DT_PAGTO <= '2009-11-30' and

    TITULOS

    .DT_PAGTO >= '2009-11-01'

     

    AND TITULOS.DT_PAGTO <= '2009-11-30' and

    TITULOS

    .CD_usuario_OPER = rec_unico.ATENDENTE ))As ValorRecuperado

     

    Into RECUPERADO

     

    FROM TITULOS WHERE

    TITULOS

    .DT_PAGTO >= '2009-11-01'

     

    AND TITULOS.DT_PAGTO <= '2009-11-30'

     

    GROUP BY TITULOS.CD_usuario_OPER ORDER BY ValorRecuperado DESC


    Fernando da Costa
    quinta-feira, 19 de novembro de 2009 19:32
  • Fernando,

         Você pode usar um join nas duas tabelas se elas tiverem um campo comum entre elas...
    MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008
    quinta-feira, 19 de novembro de 2009 22:25
    Moderador
  • Fernando,

    Mas o que esse código tem de relação com uma trigger?

    Quais valores estão sendo considerados como errados?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 20 de novembro de 2009 19:21
  • Junior/Roberto:
     na verdade é um select onde quero fazer um insert em uma outra tabela.. o que acontece é que preciso ler duas tabelas, TITULOS e REC_UNICO...

    na titulos tenho os campos CD_USUARIO_OPER e VLR_HONORARIOS  
    e na REC_UNICO os campos CD_USUARIO e VLR_HONORARIOS

    O que preciso fazer é somar os valores destas 2 tabelas para os mesmos usuarios e já gravar nessa outra tabela RECUPERADO já colocando na frente sua posicao ...
    acontece que o nome de um usuario poderá estar em uma tabela e não estar na outra, porem aqueles que estiverem nas duas, preciso somar o campo VLR_HONORARIOS    das duas...

    desculpa, mas estou começando por isso minha dúvida..

    obrigado..


    Fernando da Costa
    segunda-feira, 23 de novembro de 2009 17:50
  • Olá Fernando,

    Não sei como esta a estrutura das entidades, se existe algum relacionamento entre as entidade em questão, segue um exemplo que pode te ajudar.

    SET NOCOUNT ON

     

    -- ENTIDADE PESSOA

    DECLARE @Pessoa TABLE

          (

                 IdPessoa INT IDENTITY(1,1)

                      PRIMARY KEY

                ,NoPessoa VARCHAR(30)

                ,DaCadastro DATETIME

                      DEFAULT(GETDATE())                 

          )

     

    -- ENTIDADE REC_UNICO

    DECLARE @Rec_Unico TABLE

          (

                 Cd_Usuario INT

                      PRIMARY KEY

                ,Vlr_Honorario NUMERIC(5,2)  

          )

     

    -- ENTIDADE TITULOS

    DECLARE @Titulos TABLE

          (

                 Cd_Usuario_Oper INT

                      PRIMARY KEY

                ,Vlr_Honorario NUMERIC(5,2)                    

          )

     

    -- INSERINDO VALORES NA ENTIDADE PESSOA  

    INSERT @Pessoa(NoPessoa)

          VALUES('Heberton Melo')

    INSERT @Pessoa(NoPessoa)

          VALUES('Mario Andrade')

    INSERT @Pessoa(NoPessoa)

          VALUES('Charles de Freita')

    INSERT @Pessoa(NoPessoa)

          VALUES('Junior Galvão')

     

    -- INSERINDO AS PESSOAS NAS DUAS ENTIDADES

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(1, 200.00)

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(2, 100.00)

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(1, 200.00)

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(2, 300.00)

         

    -- INSERINDO AS PESSOAS EM UMA ÚNICA ENTIDADE

    INSERT @Titulos(Cd_Usuario_Oper, Vlr_Honorario)

          VALUES(3, 250.00)

    INSERT @Rec_Unico(Cd_Usuario, Vlr_Honorario)

          VALUES(4, 550.00)

         

    -- CONSULTA

        SELECT NoPessoa AS [Nome],

               U.Vlr_Honorario AS [Único], T.Vlr_Honorario AS [Título],

               U.Vlr_Honorario + T.Vlr_Honorario AS [Soma Total]

          INTO #Recuperado

          FROM @Pessoa AS P

    INNER JOIN @Rec_Unico U

            ON P.IdPessoa = U.Cd_Usuario

    INNER JOIN @Titulos AS T

            ON U.Cd_Usuario = T.Cd_Usuario_Oper    

           

           

    -- RECUPERANDO A ENTIDADE TEMPORÁRIA

    SELECT *

      FROM #Recuperado

     
    Resultado.

    Nome               Único       Título              Soma Total

    -----------------  ----------- ---------------- ----------------------
    Heberton Melo   200.00     200.00           400.00

    Mario Andrade   100.00     300.00           400.00

     

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog:
    http://heberton-melo.spaces.live.com

    • Marcado como Resposta Fernanda Simões quarta-feira, 2 de dezembro de 2009 13:56
    segunda-feira, 23 de novembro de 2009 22:07