Usuário com melhor resposta
Consulta com Case when na coluna especificada

Pergunta
-
Olá pessoal,
Estou com uma duvida.
Eu fiz um select para que em uma determinada coluna (Data de Entrega) ele me retorne a data ou se esteja NULL utilizando o isnull preencha o campo como "NÃO ENTREGUE".
declare
@ini datetime = '2014-10-01',
@fim datetime = '2014-10-31'
select S.nf_nota AS [N° NF], CONVERT ( char (10),NF_DTEMIS,105) AS FATURAMENTO, me_ds as [Operação], sv.ve_nr as [N° Veiculo],
ISNULL (CONVERT (char (12),v.ve_dtent,105),'NÃO ENTREGUE') as [Data de Entrega],
sv.ve_nr from ger_nfs s join ger_nfsv sv on s.nf_nr=sv.nf_nr join ger_ve v on v.ve_nr=sv.ve_nr join ger_cg c on c.cg_cd=s.cg_cd join tab_mod m on m.mod_cd=v.mod_cd join tab_me me on me.me_cd=s.me_cd
where s.nf_dtemis between @ini and @fim and nf_dtcanc is null and s.me_cd like 'VE%' and dep_cd ='VN'Resultado
Até ai tudo bem!
Agora a minha duvida é o seguinte.
Eu preciso que quando a operação seja do tipo "DC" (Devolução de Compra) preenche na linha do veiculo especifico na coluna Data de Entrega como "DEVOLVIDO".
Tentei utilizar o Case when na seleção das colunas mas não consegui.
Respostas
-
Deleted
- Sugerido como Resposta Durval RamosModerator quinta-feira, 13 de novembro de 2014 16:08
- Marcado como Resposta Everton.moreira sexta-feira, 14 de novembro de 2014 17:08
Todas as Respostas
-
Tente colocar na coluna assim:
SELECT Campo1, Campo2, CASE WHEN CampoOperacao = 'DC' THEN 'DEVOLUÇÃO' WHEN CampoOperacao = 'VDA'THEN 'VENDIDO' ELSE CampoDataCompra END as Data_Compra FROM Tabela
Veja se esta estrutura naum te ajuda!
Att,
Rafael.
**** SER A RESPOSTA FOR UTIL, NÃO ESQUEÇA DE MARCA-LÁ =P ****
- Sugerido como Resposta Durval RamosModerator quinta-feira, 13 de novembro de 2014 16:07
-
Outro exemplo que da pra testar sem precisar criar nada:
DECLARE @variavel VARCHAR(50) SET @variavel = 1 SELECT CASE WHEN @variavel = 1 THEN 'DEVOLUÇÃO' WHEN @variavel = 2 THEN 'VENDIDO' ELSE @variavel END as Resultado
**** SER A RESPOSTA FOR UTIL, NÃO ESQUEÇA DE MARCA-LÁ =P ****
-
Deleted
- Sugerido como Resposta Durval RamosModerator quinta-feira, 13 de novembro de 2014 16:08
- Marcado como Resposta Everton.moreira sexta-feira, 14 de novembro de 2014 17:08
-
-
EU MODIFIQUEI UM POUCO A CONSULTA, TINHA UMA FALHA AI JÁ ME RETORNOU MAIS CORRETAMENTE.
declare
@ini datetime = '2014-10-01',
@fim datetime = '2014-10-31'
select S.nf_nota AS [N° NF], CONVERT ( char (10),NF_DTEMIS,105) AS FATURAMENTO, me_ds as [Operação], sv.ve_nr as [N° Veiculo], sv.ve_nr,
CASE WHEN v.ve_dtent is null and s.me_cd like 'DC%' THEN 'DEVOLVIDO'
else ISNULL (CONVERT (char (12),v.ve_dtent,105),'NÃO ENTREGUE') end as [Data de Entrega]
from ger_nfs s join ger_nfsv sv on s.nf_nr=sv.nf_nr join ger_ve v on v.ve_nr=sv.ve_nr join ger_cg c on c.cg_cd=s.cg_cd join tab_mod m on m.mod_cd=v.mod_cd join tab_me me on me.me_cd=s.me_cd
where s.nf_dtemis between @ini and @fim and nf_dtcanc is null and dep_cd ='VN' and me.me_tpmov ='VE' -
Valeu pela dica irmão, mina consulta estava incompleta.
eu modifiquei e já me retornou certo, mas mesmo assim voce clareou minhas ideias.
obrigadão.
declare
@ini datetime = '2014-10-01',
@fim datetime = '2014-10-31'
select S.nf_nota AS [N° NF], CONVERT ( char (10),NF_DTEMIS,105) AS FATURAMENTO, me_ds as [Operação], sv.ve_nr as [N° Veiculo], sv.ve_nr,
CASE WHEN v.ve_dtent is null and s.me_cd like 'DC%' THEN 'DEVOLVIDO'
else ISNULL (CONVERT (char (12),v.ve_dtent,105),'NÃO ENTREGUE') end as [Data de Entrega]
from ger_nfs s join ger_nfsv sv on s.nf_nr=sv.nf_nr join ger_ve v on v.ve_nr=sv.ve_nr join ger_cg c on c.cg_cd=s.cg_cd join tab_mod m on m.mod_cd=v.mod_cd join tab_me me on me.me_cd=s.me_cd
where s.nf_dtemis between @ini and @fim and nf_dtcanc is null and dep_cd ='VN' and me.me_tpmov ='VE'
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 19 de novembro de 2014 12:46