Usuário com melhor resposta
Soma Complicada

Pergunta
-
Prezados Bom Dia!
Estou criando uma SQL, ate agora porem nao estou conseguindo fazer um determinada conta, vou posta resumo abaixo:
SQL
SELECT
SUM(ITENS.QTDCOMPRADA) AS QTD_PEDIDO,
SUM(ITENS.PEDIDOEXTRA) AS PEDIDOEXTRA,
SUM(ITENS.DEPOSITO) AS DEPOSITOQtd Pedido Qtd Extra Qtd Deposito TOTAL
45.1000 5.0000 NULL 50,10
NULL NULL NULL
4.8840 NULL 2.0000 6.48Obrigado a todos.
Respostas
-
Está gerando algum erro ?
se estiver post aqui
Tente desse forma:
SELECT SUM(CAMPO_A_SER_SOMADO) AS NOME_DESEJADO FROM TABELA
Creio que será necessário executar o comando utilizando o comando JOIN
http://luisgustavo12.wordpress.com/
- Editado GuSouza quinta-feira, 31 de julho de 2014 12:14
- Marcado como Resposta Ronnie Von sexta-feira, 1 de agosto de 2014 18:23
-
Bom dia,
Ronnie, experimente adicionar a função Coalesce para trocar null por zero:
SUM(COALESCE(ITENS.QTDCOMPRADA, 0) + COALESCE(ITENS.PEDIDOEXTRA, 0) + COALESCE(ITENS.DEPOSITO, 0))
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Ronnie Von quinta-feira, 31 de julho de 2014 15:18
-
Ronnie Von,
Uma outra solução ao invês do COALESCE seria utilizer a função IsNull, verificando se o valor for nulo o SQL Server deverá trocar e retornar um valor desejado, por exemplo zero.
Mas algumas observações são importantes:
Comparando COALESCE e ISNULL
A função ISNULL e a expressão COALESCE têm uma finalidade semelhante, mas podem se comportar de maneira diferente.
1. Como ISNULL é uma função, ela é avaliada apenas uma vez. Conforme descrito acima, os valores de entrada para a expressão COALESCE podem ser avaliados várias vezes.
2. A determinação de tipo de dados da expressão resultante é diferente. ISNULL usa o tipo de dados do primeiro parâmetro, COALESCE segue as regras da expressão CASE e retorna o tipo de dados de valor com a precedência mais alta.
3. A nulidade da expressão resultante é diferente para ISNULL e COALESCE. O valor de retorno ISNULL é sempre considerado não anulável (supondo que o valor de retorno seja não nulo) enquanto que COALESCE com parâmetros não nulos é considerado NULL. Assim, as expressões ISNULL(NULL, 1) e COALESCE(NULL, 1), embora equivalentes, têm valores diferentes de nulidade. Isso fará diferença se você estiver usando essas expressões em colunas computadas, criando restrições de chave ou tornando determinístico o valor de retorno UDF escalar de modo que possa ser indexado como mostrado no exemplo a seguir.4. As validações para ISNULL e COALESCE também são diferentes. Por exemplo, um valor NULO para ISNULL é convertido em int enquanto que, para COALESCE, você deve fornecer um tipo de dados.
5. ISNULL utiliza somente 2 parâmetros enquanto que COALESCE utiliza um número variável de parâmetros.http://msdn.microsoft.com/pt-br/library/ms190349.aspx
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Editado Junior Galvão - MVPMVP quinta-feira, 31 de julho de 2014 19:50
- Marcado como Resposta Ronnie Von sexta-feira, 1 de agosto de 2014 18:24
-
Prezados na Verdade ele nao esta somando os campos NULL, tentei dessa forma e tb nao somou os campos NULL.
SUM(ITENS.QTDCOMPRADA+ITENS.PEDIDOEXTRA+ITENS.DEPOSITO)
Obrigado
- Marcado como Resposta Ronnie Von quinta-feira, 31 de julho de 2014 15:18
Todas as Respostas
-
Está gerando algum erro ?
se estiver post aqui
Tente desse forma:
SELECT SUM(CAMPO_A_SER_SOMADO) AS NOME_DESEJADO FROM TABELA
Creio que será necessário executar o comando utilizando o comando JOIN
http://luisgustavo12.wordpress.com/
- Editado GuSouza quinta-feira, 31 de julho de 2014 12:14
- Marcado como Resposta Ronnie Von sexta-feira, 1 de agosto de 2014 18:23
-
Prezados na Verdade ele nao esta somando os campos NULL, tentei dessa forma e tb nao somou os campos NULL.
SUM(ITENS.QTDCOMPRADA+ITENS.PEDIDOEXTRA+ITENS.DEPOSITO)
Obrigado
- Marcado como Resposta Ronnie Von quinta-feira, 31 de julho de 2014 15:18
-
Bom dia,
Ronnie, experimente adicionar a função Coalesce para trocar null por zero:
SUM(COALESCE(ITENS.QTDCOMPRADA, 0) + COALESCE(ITENS.PEDIDOEXTRA, 0) + COALESCE(ITENS.DEPOSITO, 0))
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Ronnie Von quinta-feira, 31 de julho de 2014 15:18
-
-
Ronnie Von,
Uma outra solução ao invês do COALESCE seria utilizer a função IsNull, verificando se o valor for nulo o SQL Server deverá trocar e retornar um valor desejado, por exemplo zero.
Mas algumas observações são importantes:
Comparando COALESCE e ISNULL
A função ISNULL e a expressão COALESCE têm uma finalidade semelhante, mas podem se comportar de maneira diferente.
1. Como ISNULL é uma função, ela é avaliada apenas uma vez. Conforme descrito acima, os valores de entrada para a expressão COALESCE podem ser avaliados várias vezes.
2. A determinação de tipo de dados da expressão resultante é diferente. ISNULL usa o tipo de dados do primeiro parâmetro, COALESCE segue as regras da expressão CASE e retorna o tipo de dados de valor com a precedência mais alta.
3. A nulidade da expressão resultante é diferente para ISNULL e COALESCE. O valor de retorno ISNULL é sempre considerado não anulável (supondo que o valor de retorno seja não nulo) enquanto que COALESCE com parâmetros não nulos é considerado NULL. Assim, as expressões ISNULL(NULL, 1) e COALESCE(NULL, 1), embora equivalentes, têm valores diferentes de nulidade. Isso fará diferença se você estiver usando essas expressões em colunas computadas, criando restrições de chave ou tornando determinístico o valor de retorno UDF escalar de modo que possa ser indexado como mostrado no exemplo a seguir.4. As validações para ISNULL e COALESCE também são diferentes. Por exemplo, um valor NULO para ISNULL é convertido em int enquanto que, para COALESCE, você deve fornecer um tipo de dados.
5. ISNULL utiliza somente 2 parâmetros enquanto que COALESCE utiliza um número variável de parâmetros.http://msdn.microsoft.com/pt-br/library/ms190349.aspx
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Editado Junior Galvão - MVPMVP quinta-feira, 31 de julho de 2014 19:50
- Marcado como Resposta Ronnie Von sexta-feira, 1 de agosto de 2014 18:24
-