none
SUM RRS feed

Respostas

  • SirSmart,

     

    Você quer pegar o resultado do case e fazer a soma?

    sexta-feira, 5 de dezembro de 2008 17:33
  • Olá SirSmart,

    vc quer agrupar os dados de acordo com o valores do case? pois, é isso que a sentença está fazendo, como o LoanTypeId está no group by caso existam varias possibilidades os resgistros irão ser agrupados por eles também.

     

    Junior, não é possível somar o case pois ele pode retornar  'SL', 'SB' ou "CONVERT(varchar(15), CONVERT(int, SUM(AMOUNT)))" e o resultado do case está sendo usado no group by

     

    SirSmart, se vc quer os valores agregados também pelo LoanTypeId, não bastaria a sentença abaixo?

    Code Snippet

    SELECT

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    CASE bc.LoanTypeId

    WHEN 1

    THEN 'SL'

    WHEN 2

    THEN 'SB'

    END AS LoanTypeIds

    FROM BlotterContract AS BC

    LEFT JOIN BlotterLoanType AS BLT ON

    bc.LoanTypeId = blt.id

    WHERE bc.Stock = 'ABNB3'

    GROUP BY

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    bc.LoanTypeId

     

     

    sexta-feira, 5 de dezembro de 2008 17:51

Todas as Respostas

  • SirSmart,

     

    Veja estes exemplos:

     

    Code Snippet

    Select Case Sum(1+1)

    When 1 Then 'Número 1'

    When 2 Then 'Número 2'

    End As Resultado

     

    Declare @V1 Int,

    @V2 Int

     

    Set @V1=1

    Set @V2=1

     

    Select Case Sum(@V1+@V2)

    When 1 Then 'Número 1'

    When 2 Then 'Número 2'
    End As Resultado

     

     

    sexta-feira, 5 de dezembro de 2008 16:14
  • Ok, agora funcionou, mas tenho mais um problema, estou fazendo o seguinte select?

     

    SELECT

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    CASE bc.LoanTypeId

    WHEN 1

    THEN 'SL'

    WHEN 2

    THEN 'SB'

    ELSE

    CONVERT(varchar(15), CONVERT(int, SUM(AMOUNT)))

    END AS LoanTypeIds

    FROM BlotterContract AS BC

    LEFT JOIN BlotterLoanType AS BLT ON

    bc.LoanTypeId = blt.id

    WHERE bc.Stock = 'ABNB3'

    GROUP BY

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    bc.LoanTypeId

     

    Ao invés de me retornar um registro , me retorna 5. Eu tenho 5 registro do tipo 'ABNB3', mas tenho que retornar um com a soma. Não estou entendendo pq não consigo .

     

    Obrigado

    sexta-feira, 5 de dezembro de 2008 16:21
  • SirSmart,

     

    O seu select esta retornando cinco linhas, mas o caso não vai limitar isso!!!

    sexta-feira, 5 de dezembro de 2008 16:29
  • Não, eu só preciso somar as 5 apenas .

     

    Obrigado

     

    sexta-feira, 5 de dezembro de 2008 16:52
  • SirSmart,

     

    Em qual ponto do seu código você esta utilizando a soma de valores?

    sexta-feira, 5 de dezembro de 2008 17:09
  • Na verdade eu gostaria que meu codigo entrasse no case e somasse o campo. Eu tenho 5 registro apenas, então ele deveria pegar os 5 soma-los e retornar um registro apenas.

     

    Mas isso hj não acontece ele entra no case e não soma nenhum registro. Apresenta apenas a coluna

    LoanTypeIds ao lado com o valor apenas do proprio campo da soma.

     

    Coloquei um group by para resolver isso, mas não teu certo.

     

    O que devo fazer?

     

    Obrigado

    sexta-feira, 5 de dezembro de 2008 17:23
  • SirSmart,

     

    Você quer pegar o resultado do case e fazer a soma?

    sexta-feira, 5 de dezembro de 2008 17:33
  • Olá SirSmart,

    vc quer agrupar os dados de acordo com o valores do case? pois, é isso que a sentença está fazendo, como o LoanTypeId está no group by caso existam varias possibilidades os resgistros irão ser agrupados por eles também.

     

    Junior, não é possível somar o case pois ele pode retornar  'SL', 'SB' ou "CONVERT(varchar(15), CONVERT(int, SUM(AMOUNT)))" e o resultado do case está sendo usado no group by

     

    SirSmart, se vc quer os valores agregados também pelo LoanTypeId, não bastaria a sentença abaixo?

    Code Snippet

    SELECT

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    CASE bc.LoanTypeId

    WHEN 1

    THEN 'SL'

    WHEN 2

    THEN 'SB'

    END AS LoanTypeIds

    FROM BlotterContract AS BC

    LEFT JOIN BlotterLoanType AS BLT ON

    bc.LoanTypeId = blt.id

    WHERE bc.Stock = 'ABNB3'

    GROUP BY

    BC.STOCK,

    BC.ID,

    BC.CONTRACTNUMBER,

    BC.AMOUNT,

    BC.RATE,

    bc.LoanTypeId

     

     

    sexta-feira, 5 de dezembro de 2008 17:51
  • Emanuel,

     

    Eu imaginei que ele estava utilizando valores numéricos, so fosse este seria um exemplo:

     

    Code Snippet

    Create Function F_Scalar_Valor (@Numero Int)

    Returns Int

    As

    Begin

    Declare @Numero2 Int

    Set @Numero2=1

    Set @Numero2=@Numero2+@Numero

    Return (@Numero2)

    End

     

     

    Declare @Valor Int

    Select @Valor=Case dbo.F_Scalar_Valor(1)

    When 1 Then 1

    When 2 Then 2

    End

     

    Select @Valor

     

     

    sexta-feira, 5 de dezembro de 2008 18:18