none
CASE TRAZENDO VALORES APENAS SE O VALOR FOR NULO NUM DETERMINADO HORARIO RRS feed

  • Pergunta

  • Boa tarde, estou com uma case e o problema é que tenho suas situações de resultado na mesma.

    1º CASE - trazer resultado que aluno faltou no periodo da manhã. Se o aluno estiver com entrada NULL entre 07h e 09h resultado é "O ALUNO FALTOU"

    2º CASE - trazer resultado que o aluno faltou no periodo da tarde. Se o aluno estiver com entrada NULL entre as 13h e as 15h, resultado é o "O ALUNO FALTOU".

    CASE 
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL AND SET4.TIPO='M'  
    		THEN '1 - O ALUNO FALTOU AO COLEGIO '
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL AND SET4.TIPO='V'  
    		THEN '2 - O ALUNO FALTOU AO COLEGIO ' 
    END

    Obs.: tenho o TIPO M para matutino nos horarios da manha e V para vespetino no periodo da tarde, mas preciso de mais um valor certeiro para poder fazer esta consulta funcionar e pelo que vejo será aplicação de horario fixos mesmo com mais uma condição deste CASE, mas ainda não sei como fazer.


    CharlesTI.

    sexta-feira, 18 de maio de 2018 19:03

Respostas

  • Bom dia Junior Galvão.

    Cheguei a fazer neste caso porém inserindo um intervalo de datas para poder disparar a case pegando a hora e minuto atual para fazer a comparação.

    CASE 
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL 
    	     AND SET4.TIPO='M' AND CONVERT(VARCHAR(11),GETDATE(),114) BETWEEN '09:00' AND '13:30' 
    	THEN '1 - O ALUNO FALTOU AO COLEGIO '
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL 
                 AND SET4.TIPO='V' AND CONVERT(VARCHAR(11),GETDATE(),114) BETWEEN '16:00' AND '20:30'  
    	THEN '2 - O ALUNO FALTOU AO COLEGIO ' 
    END



    CharlesTI.

    • Marcado como Resposta CHARLES.PTU sexta-feira, 25 de maio de 2018 13:23
    terça-feira, 22 de maio de 2018 14:24

Todas as Respostas

  • Charles,

    Da mesma forma que você adicionou as condições no CASE utilizando o operador lógico condicional AND, vai adicionar esta nova condição, repassando os valores fixos de horário que você deseja.

    Se você tiver um campo que armazene a data e hora será bem simples, caso contrário, algumas implementações adicionais serão necessárias.

    Veja se o exemplo abaixo te ajuda:

    CASE 
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL AND SET4.TIPO='M' AND HORARIO = '12:00'  
    		THEN '1 - O ALUNO FALTOU AO COLEGIO '
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL AND SET4.TIPO='V' AND HORARIO = '18:00'
    		THEN '2 - O ALUNO FALTOU AO COLEGIO ' 
    END
    Talvez o uso das funções DatePart() ou GetDate() podem te ajudar.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 22 de maio de 2018 12:49
  • Bom dia Junior Galvão.

    Cheguei a fazer neste caso porém inserindo um intervalo de datas para poder disparar a case pegando a hora e minuto atual para fazer a comparação.

    CASE 
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL 
    	     AND SET4.TIPO='M' AND CONVERT(VARCHAR(11),GETDATE(),114) BETWEEN '09:00' AND '13:30' 
    	THEN '1 - O ALUNO FALTOU AO COLEGIO '
    	WHEN SET4.ENTRADA_ACESSO IS NULL AND SET4.SAIDA_ACESSO IS NULL 
                 AND SET4.TIPO='V' AND CONVERT(VARCHAR(11),GETDATE(),114) BETWEEN '16:00' AND '20:30'  
    	THEN '2 - O ALUNO FALTOU AO COLEGIO ' 
    END



    CharlesTI.

    • Marcado como Resposta CHARLES.PTU sexta-feira, 25 de maio de 2018 13:23
    terça-feira, 22 de maio de 2018 14:24
  • Charles,

    Ok, mas mesmo assim não deu certo? Os dados não estão sendo considerados?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 25 de maio de 2018 12:39
  • Deu certo.

    O que tinha feito antes e depois vc tinha postado.


    CharlesTI.

    sexta-feira, 25 de maio de 2018 13:22
  • Deu certo.

    O que tinha feito antes e depois vc tinha postado.


    CharlesTI.


    Ok.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 25 de maio de 2018 13:24