Usuário com melhor resposta
SUM

Pergunta
-
Respostas
-
-
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 SnippetSELECT
BC
.STOCK,BC
.ID,BC
.CONTRACTNUMBER,BC
.AMOUNT,BC
.RATE,CASE
bc.LoanTypeId WHEN 1 THEN 'SL' WHEN 2 THEN 'SB' END AS LoanTypeIdsFROM
BlotterContract AS BCLEFT
JOIN BlotterLoanType AS BLT ONbc
.LoanTypeId = blt.idWHERE
bc.Stock = 'ABNB3'GROUP
BYBC
.STOCK,BC
.ID,BC
.CONTRACTNUMBER,BC
.AMOUNT,BC
.RATE,bc
.LoanTypeId
Todas as Respostas
-
SirSmart,
Veja estes exemplos:
Code SnippetSelect
Case Sum(1+1)Declare
@V1 Int, @V2 IntSet
@V1=1Set
@V2=1Select
Case Sum(@V1+@V2)
End As Resultado -
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 LoanTypeIdsFROM
BlotterContract AS BCLEFT
JOIN BlotterLoanType AS BLT ONbc
.LoanTypeId = blt.idWHERE
bc.Stock = 'ABNB3'GROUP
BYBC
.STOCK,BC
.ID,BC
.CONTRACTNUMBER,BC
.AMOUNT,BC
.RATE,bc
.LoanTypeIdAo 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
-
-
-
-
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
-
-
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 SnippetSELECT
BC
.STOCK,BC
.ID,BC
.CONTRACTNUMBER,BC
.AMOUNT,BC
.RATE,CASE
bc.LoanTypeId WHEN 1 THEN 'SL' WHEN 2 THEN 'SB' END AS LoanTypeIdsFROM
BlotterContract AS BCLEFT
JOIN BlotterLoanType AS BLT ONbc
.LoanTypeId = blt.idWHERE
bc.Stock = 'ABNB3'GROUP
BYBC
.STOCK,BC
.ID,BC
.CONTRACTNUMBER,BC
.AMOUNT,BC
.RATE,bc
.LoanTypeId -
Emanuel,
Eu imaginei que ele estava utilizando valores numéricos, so fosse este seria um exemplo:
Code SnippetCreate
Function F_Scalar_Valor (@Numero Int)Returns
IntAs
Begin Declare @Numero2 Int Set @Numero2=1 Set @Numero2=@Numero2+@Numero Return (@Numero2) EndDeclare
@Valor IntSelect
@Valor=Case dbo.F_Scalar_Valor(1) When 1 Then 1 When 2 Then 2 EndSelect @Valor