DUVIDA NO MS - SQL

USUARIO.EXCLUIDOS 30/05/2007 09:38:03
#218820
Tem a função chamada isnull eu queria alguma coisa parecida para o zero
porque quando for zero eu quero q fique 1 pq é uma divisão.

Exemplo: Select valor1 * valor2 / valor3

só q no valor3 não pode ser zero.


Obrigado
ALMARTI 30/05/2007 09:44:29
#218824
Se estiver usando Acces: IIF(valor3<>0;(valor1 * valor2 / valor3);(valor1 * valor2 / 1)

Se SQL Server CASE WEEN(valor3<>0;(valor1 * valor2 / valor3);(valor1 * valor2 / 1)

Este ultimo porém , nao tenho muita certeza. Não tenho MSSQLServer aqui.
Pesquise sobre o CASE WEEN

USUARIO.EXCLUIDOS 30/05/2007 09:51:17
#218827
Resposta escolhida
Tente assim, fiz o teste com os registros que estou mostrando na figura e funcionou legal, o resultado foi 50, ou seja, atribuiu 1.

SELECT valor1*valor2/iif((valor3 = 0 OR valor3 is null), 1, valor3) AS Valor
FROM Tabela1
WHERE Tabela1.codigo = 1;

ALMARTI 30/05/2007 09:55:54
#218829
Piolho, isto funciona com o access. Não ficou claro que banco ele usa, uma vez que no título ele diz DUVIDA NO MS - SQL
USUARIO.EXCLUIDOS 30/05/2007 10:20:22
#218834
Disculpa, ALMARTI e perdão DANIELFREIRE, só quiz ajudar!
USUARIO.EXCLUIDOS 30/05/2007 10:25:53
#218838
Segue a resposta para SQL SERVER (testado).

SELECT VALOR1 * VALOR2 /
CASE WHEN (VALOR3 = 0 OR VALOR3 IS NULL) THEN
1
ELSE
VALOR3
END
FROM TABELA1
WHERE CODIGO = 1


Tópico encerrado , respostas não são mais permitidas