Tenho um select que retorna o valor de frete conforme unidade. Abaixo, as unidades '0001', '0002' e '0003' retornam algum valor, pois há registros na consulta. Na unidade '0004' o valor retornado é 'x' (alias do select), pois NÃO há nenhum registro dessa unidade nesse mês. Como faço para que quando escolhido a unidade '0004', seja retornado o valor ZERO?
SELECT
(ISNULL(valor_admfin.fat_admfin,0)) AS x
FROM
(SELECT CASE cte.unidade_codigo
WHEN '0001' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admce FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_fince FROM CAD_PARAMETRO)/100
WHEN '0002' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admpe FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finpe FROM CAD_PARAMETRO)/100
WHEN '0003' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admsp FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finsp FROM CAD_PARAMETRO)/100
WHEN '0004' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admpe FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finpe FROM CAD_PARAMETRO)/100
END AS fat_admfin
FROM dbo.CONTRATO_FRETE c
INNER JOIN viagens v ON c.pk_contrato_frete = v.fk_contrato_frete
INNER JOIN consulta_cte cte ON v.viagem = cte.viagem
INNER JOIN cad_filial f ON c.cod_unidade = f.codigo
INNER JOIN dbo.cad_mes m ON month(c.emissao) = m.codigo
WHERE year(c.emissao) = '2016'
AND month(c.emissao) = '06'
AND cte.unidade_codigo = '0004'
AND c.des_status <> 'Cancelado'
AND cte.cancelado <> 'Sim'
GROUP BY cte.unidade_codigo
) AS valor_admfin
Pergunta
Célio Morais
caros, boa noite!
Tenho um select que retorna o valor de frete conforme unidade. Abaixo, as unidades '0001', '0002' e '0003' retornam algum valor, pois há registros na consulta. Na unidade '0004' o valor retornado é 'x' (alias do select), pois NÃO há nenhum registro dessa unidade nesse mês. Como faço para que quando escolhido a unidade '0004', seja retornado o valor ZERO?
SELECT
(ISNULL(valor_admfin.fat_admfin,0)) AS x
FROM
(SELECT CASE cte.unidade_codigo
WHEN '0001' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admce FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_fince FROM CAD_PARAMETRO)/100
WHEN '0002' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admpe FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finpe FROM CAD_PARAMETRO)/100
WHEN '0003' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admsp FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finsp FROM CAD_PARAMETRO)/100
WHEN '0004' THEN ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_admpe FROM CAD_PARAMETRO)/100 +
ISNULL(SUM(ISNULL(cte.total_frete,0)),0) * (SELECT taxa_finpe FROM CAD_PARAMETRO)/100
END AS fat_admfin
FROM dbo.CONTRATO_FRETE c
INNER JOIN viagens v ON c.pk_contrato_frete = v.fk_contrato_frete
INNER JOIN consulta_cte cte ON v.viagem = cte.viagem
INNER JOIN cad_filial f ON c.cod_unidade = f.codigo
INNER JOIN dbo.cad_mes m ON month(c.emissao) = m.codigo
WHERE year(c.emissao) = '2016'
AND month(c.emissao) = '06'
AND cte.unidade_codigo = '0004'
AND c.des_status <> 'Cancelado'
AND cte.cancelado <> 'Sim'
GROUP BY cte.unidade_codigo
) AS valor_admfin
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.