Usuário com melhor resposta
Como implementar um select com If

Pergunta
-
Olá,
é possível criar uma condição em um select?
Por exempo, no select abaixo:
ALTER PROCEDURE [dbo].[spIdadeListaNomeAnimais] AS BEGIN DECLARE @DataAtual DATE SET @DataAtual = GETDATE() Select nome, @DataAtual AS data_atual, data_Nasc, (CONVERT(VARCHAR,DATEDIFF(YEAR,data_Nasc,@DataAtual)) + ' ano(s)')AS IDADE_ano, (CONVERT(VARCHAR,DATEDIFF(MONTH,data_Nasc,@DataAtual)) + ' mes(es)')AS IDADE_mes, (CONVERT(VARCHAR,DATEDIFF(SECOND,data_Nasc,@DataAtual) / 86400/7) + ' semana(s)')AS IDADE_semana From Animal_Companhia Order by data_Nasc END
Eu preciso que retorne com a possíveis descrições abaixo conforme a idade em dias meses ou anos:
Período neonatal = 0 aos 14 dias
Período de transição = 15 a 21 dias
Período de reconhecimento = 21 a 28 dias
Período de socialização = 21 a 49 dias
Período de socialização com humanos = 7 a 12 semanas
Período do medo I = 8 a 11 semanas
Período de rebeldia = 13 a 16 semanas
Período de surdez seletiva = 4 a 8 meses
Período do medo II = 6 a 14 meses
Período de maturidade = 1 a 4 anos
Respostas
-
Seria mais ou menos isso:
Select nome, @DataAtual AS data_atual, data_Nasc, (CONVERT(VARCHAR,DATEDIFF(YEAR,data_Nasc,@DataAtual)) + ' ano(s)')AS IDADE_ano, (CONVERT(VARCHAR,DATEDIFF(MONTH,data_Nasc,@DataAtual)) + ' mes(es)')AS IDADE_mes, (CONVERT(VARCHAR,DATEDIFF(SECOND,data_Nasc,@DataAtual) / 86400/7) + ' semana(s)')AS IDADE_semana, CASE WHEN DATEDIFF(DAY,data_Nasc,@DataAtual)) >= 0 AND DATEDIFF(DAY,data_Nasc,@DataAtual)) <= 14 THEN 'Período neonatal' WHEN DATEDIFF(DAY,data_Nasc,@DataAtual)) >= 15 AND DATEDIFF(DAY,data_Nasc,@DataAtual)) <= 21 THEN 'Período de transição' . . . END From Animal_Companhia Order by data_Nasc
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta Wilson Boris quarta-feira, 21 de setembro de 2016 13:04
-
Olá Wilson,
Tem sim..dá uma olhada nesse artigo ele mostra quase todas as possibilidades de uso de condições em T-SQL: http://www.devmedia.com.br/trabalhando-com-expressoes-case-e-a-funcao-iif-no-t-sql/31292
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Wilson Boris quarta-feira, 21 de setembro de 2016 13:04
Todas as Respostas
-
Olá Wilson,
Tem sim..dá uma olhada nesse artigo ele mostra quase todas as possibilidades de uso de condições em T-SQL: http://www.devmedia.com.br/trabalhando-com-expressoes-case-e-a-funcao-iif-no-t-sql/31292
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Wilson Boris quarta-feira, 21 de setembro de 2016 13:04
-
Seria mais ou menos isso:
Select nome, @DataAtual AS data_atual, data_Nasc, (CONVERT(VARCHAR,DATEDIFF(YEAR,data_Nasc,@DataAtual)) + ' ano(s)')AS IDADE_ano, (CONVERT(VARCHAR,DATEDIFF(MONTH,data_Nasc,@DataAtual)) + ' mes(es)')AS IDADE_mes, (CONVERT(VARCHAR,DATEDIFF(SECOND,data_Nasc,@DataAtual) / 86400/7) + ' semana(s)')AS IDADE_semana, CASE WHEN DATEDIFF(DAY,data_Nasc,@DataAtual)) >= 0 AND DATEDIFF(DAY,data_Nasc,@DataAtual)) <= 14 THEN 'Período neonatal' WHEN DATEDIFF(DAY,data_Nasc,@DataAtual)) >= 15 AND DATEDIFF(DAY,data_Nasc,@DataAtual)) <= 21 THEN 'Período de transição' . . . END From Animal_Companhia Order by data_Nasc
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta Wilson Boris quarta-feira, 21 de setembro de 2016 13:04