none
Somar Fields RRS feed

  • Pergunta

  •  

    Bom dia,

     

    Estou com dificuldade em montar um SELECT que some um conjunto de colunas. Ex: Tenho a seguinte tabela

     

    Z4_COD    Z4_DESCR          Z4_SEMANA01           Z4_SEMANA02                Z4_SEMANA03

    001           Lapis                    10                                  20                                       10

    002           Caneta                  10                                 15                                        10

     

    Preciso de um retorno assim:

     

    Z4_COD    Z4_DESCR    QTDE

    001            Lapis             40

    002            Caneta           35

     

    Como faço para poder somar a colunas (QTDE = Z4_SEMANA01 +Z4_SEMANA02+Z4_SEMANA03)

     

    Desde de ja obrigado pela ajuda

     

    Wagner Marrane

    Ball do Brasil.

    quarta-feira, 8 de outubro de 2008 13:35

Respostas

  • Boas Pessoal!

     

     

    W. Marrane, para isto vc pode utilizar o having:

     

    Utilizando a query citada acima:

    Code Snippet

    SELECT Z4_PRODUTO, Z4_DESCRIC, SUM(Z4_SEMAN01+Z4_SEMAN03) AS QTDE FROM SZ4010
    WHERE
    Z4_ANO >='2007' AND
    Z4_ANO <='2008'

    GROUP BY Z4_PRODUTO, Z4_DESCRIC

    HAVING SUM(Z4_SEMAN01+Z4_SEMAN03) > 0
    ORDER BY Z4_DESCRIC

     

     

    Espero ter ajudado!

     

    Abs.,

    Edmilton

    quinta-feira, 9 de outubro de 2008 12:23

Todas as Respostas

  • Marrane,

     

    Veja este exemplo:

     

    Code Snippet

    Declare @T1 Table

     (Codigo Int,

      Descricao VarChar(10),

      Semana1 Int,

      Semana2 Int,

      Semana3 Int)

     

    Insert Into @T1 Values (1,'Lápis',10,20,10)

    Insert Into @T1 Values (2,'Caneta',10,15,10)

     

    Select Codigo, Descricao, Sum(Semana1+Semana2+Semana3) As Quantidade From @T1

    Group By Codigo, Descricao

    Order By Codigo

     

     

     

    quarta-feira, 8 de outubro de 2008 13:42
  • Olá,

     

    Obrigado pela resposta, porém ainda tenho um problema. Essa quatidade de fields a ser somada será dinamica, em algum momento ela vai mudar, existe algo dentro do SUM que determe um DE ATÉ?

     

    Ex. SUM (Semana1 até Semana3)

     

    Att,

     

    Wagner Marrane

    Ball do Brasil.

    quarta-feira, 8 de outubro de 2008 13:48
  • Olá,

     

           Você pode utilizar o Case...

     

    Junior,

     

           Aproveitei o teu exemplo... hehe...

     

    Code Snippet

    Declare @T1 Table

    (Codigo Int,

    Descricao VarChar(10),

    Semana1 Int,

    Semana2 Int,

    Semana3 Int)

     

    declare @Variavel int

    set @Variavel = 1

    --set @Variavel = 2  -- Troque o valor de @Variavel para mudar o comportamento da query.

     

    insert Into @T1 Values (1,'Lpis',10,20,10)

    Insert Into @T1 Values (2,'Caneta',10,15,10)

    Select Codigo, Descricao,

    case @Variavel

        When 1 Then

             Semana1+Semana2+Semana3

        When 2 Then

             Semana2+Semana3

    end

    As Quantidade From @T1

    Order By Codigo

     

     

     

    quarta-feira, 8 de outubro de 2008 15:37
    Moderador
  • Roberto,

     

    Com certeza seria uma boa solução utilizar o Case.

     

    quarta-feira, 8 de outubro de 2008 16:50
  • E como eu poderia verificar se o resultado da soma é maior que zero?

     

    Code Snippet

    SELECT Z4_PRODUTO, Z4_DESCRIC, SUM(Z4_SEMAN01+Z4_SEMAN03) AS QTDE FROM SZ4010
    WHERE
    Z4_ANO >='2007' AND
    Z4_ANO <='2008'

    QTDE >0 ??????
    GROUP BY Z4_PRODUTO, Z4_DESCRIC
    ORDER BY Z4_DESCRIC

     

     

    quinta-feira, 9 de outubro de 2008 11:41
  • Boas Pessoal!

     

     

    W. Marrane, para isto vc pode utilizar o having:

     

    Utilizando a query citada acima:

    Code Snippet

    SELECT Z4_PRODUTO, Z4_DESCRIC, SUM(Z4_SEMAN01+Z4_SEMAN03) AS QTDE FROM SZ4010
    WHERE
    Z4_ANO >='2007' AND
    Z4_ANO <='2008'

    GROUP BY Z4_PRODUTO, Z4_DESCRIC

    HAVING SUM(Z4_SEMAN01+Z4_SEMAN03) > 0
    ORDER BY Z4_DESCRIC

     

     

    Espero ter ajudado!

     

    Abs.,

    Edmilton

    quinta-feira, 9 de outubro de 2008 12:23