Spending only one year on a sql server 2014 proc

2

I made a filter in a proc and I can not bring results. When running the proc it did not give any errors, but it does not bring any result and I do not know if it is correct. The colleague said that I do not need to pass any parameters, I do not know if this is it, but the proc is great to put here, but anyway I posted her code. The field changed by muim is this: AND YEAR(EXAME.ID_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO . I removed the creation of some temporary tables and some inserts. The desired line is at the end of the proc and what I'm looking for is whether or not the syntax is correct. I removed it because it exceeded the character limit. I left only the header and the return part of the procedure, which is what matters. I also removed it for the reason above.

ALTER proc [dbo].[SP_CMO_SEL_PORTARIA_ATIVOS]  

    @ID_XFC_Inicial int,
    @ID_XFC_Final  int,
    @ID_EMP int,
    @ID_UNI_EMP int,
    @ID_XFC_GRP     VarChar( 1000 )= '',
    @DT_ADM DATETIME,
    @DT_DE_LAUDO DATETIME,
    @DT_ATE_LAUDO DATETIME

as
SET NOCOUNT ON  

Begin
.....

/***********************************************************************************************************/
/*************************--ÁREA DE CONSULTA PARA RETORNAR OS DADOS--***************************************/
/***********************************************************************************************************/



    -- Retorna os dados da tabela
    --caso tenha sido definido a lista de funcionarios
    --para exibir, não fazer o filtro por data de admissão
    IF @ID_XFC_GRP <> '' OR @ID_XFC_Inicial <> 0
        BEGIN
            SELECT  #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_UNI_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.RAM_ATV,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_LAU_PER,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_NASC_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_MAE_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.IR_SEX_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SUS_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_RG_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_CPF_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_END,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_CID_END, 
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.SG_UF_END,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_FUN_ULT, 
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_SET_ULT,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_DMS_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_EMP,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_UNI_EMP,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_SET_UNI,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_SET_UNI, 
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_FUN,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_FNL_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DS_MAT_CTO,
                    isNull( OIT1980LEITURA.DT_RX, EXAME_RAIOX.DT_EXM_REA ) DT_RX,
                    OIT1980LEITURA.RX_NUM,
                    EXAME_RAIOX.DS_OBS_EXM_REA AS DS_RAIOX,
                    ESPIROMETRIA.CVF_PRE, 
                    ESPIROMETRIA.CVF_MED, 
                    Replace(Cast(ESPIROMETRIA.CVF_POR as varchar(7)), '.', ',') as CVF_POR,  
                    ESPIROMETRIA.CVF_LMT,  
                    ESPIROMETRIA.VEF_PRE,  
                    ESPIROMETRIA.VEF_MED,
                    Replace(Cast(ESPIROMETRIA.VEF_POR as varchar(7)), '.', ',') as VEF_POR,  
                    ESPIROMETRIA.VEF_LMT,
                    ESPIROMETRIA.VEF_CVF_PRE, 
                    ESPIROMETRIA.VEF_CVF_MED, 
                    ESPIROMETRIA.VEF_CVF_POR, 
                    ESPIROMETRIA.VEF_CVF_LMT,
                    ESPIROMETRIA.FEF_PRE,  
                    ESPIROMETRIA.FEF_MED, 
                    Replace(Cast(ESPIROMETRIA.FEF_POR as varchar(7)),'.', ',') as FEF_POR,
                    ESPIROMETRIA.FEF_LMT,
                    EXAME.DS_OBS_EXM_REA AS DS_ESPIROMETRIA,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_DTLH_CLSS,
                    CIDADE_UNIDADE.NM_CID_END AS CIDADE 
                    , EXAME.DT_EXM_REA DT_EXA_EXP
                    , NM_EMP,
                    (   Select NO_TEL_UNI_EMP From t_cmo_unidade
                        Where ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Telefone,
                    (   Select DS_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Endereco,
                    (   Select NM_BRR_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Bairro,
                    (   Select CD_CEP From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) CEP,
                    (   Select NM_CID_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Cidade,
                    (   Select SG_UF_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) UF

               FROM #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO 
                    LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_ADMISSAO    
                    ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC

                    LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_FUNCAO
                    ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC

                    LEFT OUTER JOIN T_CMO_OIT1980_LEITURA OIT1980LEITURA
                    ON OIT1980LEITURA.ID_OIT_LET = 1
                    AND OIT1980LEITURA.ID_OIT = (SELECT ID_OIT FROM T_CMO_OIT1980 
                                                        WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                    WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                    AND   ID_EXM = 3936     
                                                                                                    AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação  
                                                                            )
                                            )           
                    LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME_RAIOX
                                                             ON  EXAME_RAIOX.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER     
                                                             AND EXAME_RAIOX.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC 
                                                             AND EXAME_RAIOX.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                                  WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                                  AND   ID_EXM = 3936       
                                                                                                                  AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação    
                                                                                            )
                    LEFT OUTER JOIN T_CMO_ESPIROMETRIA ESPIROMETRIA
                                     ON  ESPIROMETRIA.ID_EXP = (SELECT ID_EXP FROM T_CMO_ESPIROMETRIA
                                                                              WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                                            WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                                            AND   (ID_EXM = 1514 OR ID_EXM = 3136)
                                                                                                                            AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
                                                                                                    )
                                                                )       
                    --PARA PEGAR A OBS DA ESPIROMETRIA
                    LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME
                    ON  EXAME.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
                    AND EXAME.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC        
                    AND EXAME.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                    WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                    AND   (ID_EXM = 1514 OR ID_EXM = 3136)
                                                                                    AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
                                                            )                                       
                    left outer join T_CMO_ENDERECO AS CIDADE_UNIDADE
                        ON  CIDADE_UNIDADE.id_emp = @ID_EMP 
                        and CIDADE_UNIDADE.id_uni_emp = @ID_UNI_EMP
                        and CIDADE_UNIDADE.IR_TIP_END = 'U'

             WHERE  #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP = @ID_EMP
                AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP = @ID_UNI_EMP
                AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC IN (SELECT ID_XFC FROM #FUNCIONARIOS_ATIVOS)
                AND YEAR(EXAME.ID_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO

                ORDER BY #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
                         #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
                         #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC

        END
    ELSE 
        BEGIN
            SELECT  #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_UNI_EMP,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.RAM_ATV,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_LAU_PER,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_NASC_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_MAE_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.IR_SEX_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SUS_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_RG_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_CPF_XFC,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_END,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_CID_END, 
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.SG_UF_END,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_FUN_ULT, 
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_SET_ULT,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_DMS_PER_CPC_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_EMP,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_UNI_EMP,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_SET_UNI,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_SET_UNI, 
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_FUN,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_FNL_PER_FUN_XFC,
                    #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DS_MAT_CTO,
                    OIT1980LEITURA.DT_RX,
                    OIT1980LEITURA.RX_NUM,
                    EXAME_RAIOX.DS_OBS_EXM_REA AS DS_RAIOX,
                    ESPIROMETRIA.CVF_PRE, 
                    ESPIROMETRIA.CVF_MED, 
                    Replace(Cast(ESPIROMETRIA.CVF_POR as varchar(7)), '.', ',') as CVF_POR,  
                    ESPIROMETRIA.CVF_LMT,  
                    ESPIROMETRIA.VEF_PRE,  
                    ESPIROMETRIA.VEF_MED,
                    Replace(Cast(ESPIROMETRIA.VEF_POR as varchar(7)), '.', ',') as VEF_POR,  
                    ESPIROMETRIA.VEF_LMT,
                    ESPIROMETRIA.VEF_CVF_PRE, 
                    ESPIROMETRIA.VEF_CVF_MED, 
                    ESPIROMETRIA.VEF_CVF_POR, 
                    ESPIROMETRIA.VEF_CVF_LMT,
                    ESPIROMETRIA.FEF_PRE,  
                    ESPIROMETRIA.FEF_MED, 
                    Replace(Cast(ESPIROMETRIA.FEF_POR as varchar(7)),'.', ',') as FEF_POR,
                    ESPIROMETRIA.FEF_LMT,
                    EXAME.DS_OBS_EXM_REA AS DS_ESPIROMETRIA,
                    #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_DTLH_CLSS,
                    CIDADE_UNIDADE.NM_CID_END AS CIDADE 
                    , EXAME.DT_EXM_REA DT_EXA_EXP
                    , NM_EMP,
                    (   Select NO_TEL_UNI_EMP From t_cmo_unidade
                        Where ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Telefone,
                    (   Select DS_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Endereco,
                    (   Select NM_BRR_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Bairro,
                    (   Select CD_CEP From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) CEP,
                    (   Select NM_CID_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) Cidade,
                    (   Select SG_UF_END From t_cmo_endereco 
                        Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP    ) UF

               FROM #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO 
                    LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_ADMISSAO    
                    ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC

                    LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_FUNCAO
                    ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC

                    LEFT OUTER JOIN T_CMO_OIT1980_LEITURA OIT1980LEITURA
                    ON OIT1980LEITURA.ID_OIT_LET = 1
                    AND OIT1980LEITURA.ID_OIT = (SELECT ID_OIT FROM T_CMO_OIT1980 
                                                        WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                    WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                    AND   ID_EXM = 3936     
                                                                                                    AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação  
                                                                            )
                                            )           
                    LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME_RAIOX
                                                             ON  EXAME_RAIOX.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER     
                                                             AND EXAME_RAIOX.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC 
                                                             AND EXAME_RAIOX.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                                  WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                                  AND   ID_EXM = 3936       
                                                                                                                  AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação    
                                                                                            )
                    LEFT OUTER JOIN T_CMO_ESPIROMETRIA ESPIROMETRIA
                                     ON  ESPIROMETRIA.ID_EXP = (SELECT ID_EXP FROM T_CMO_ESPIROMETRIA
                                                                              WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                                                            WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                                                            AND   (ID_EXM = 1514 OR ID_EXM = 3136)
                                                                                                                            AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
                                                                                                    )
                                                                )       
                    --PARA PEGAR A OBS DA ESPIROMETRIA
                    LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME
                    ON  EXAME.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
                    AND EXAME.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC        
                    AND EXAME.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
                                                                                    WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
                                                                                    AND   (ID_EXM = 1514 OR ID_EXM = 3136)
                                                                                    AND   NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
                                                            )                                       
                    left outer join T_CMO_ENDERECO AS CIDADE_UNIDADE
                        ON  CIDADE_UNIDADE.id_emp = @ID_EMP 
                        and CIDADE_UNIDADE.id_uni_emp = @ID_UNI_EMP
                        and CIDADE_UNIDADE.IR_TIP_END = 'U'

             WHERE  #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP = @ID_EMP
                AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP = @ID_UNI_EMP
                AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC IN (SELECT ID_XFC FROM #FUNCIONARIOS_ATIVOS)
                AND EXISTS(SELECT ID_XFC FROM #T_SP_CMO_SEL_REL_FICHA_ADMISSAO 
                                        WHERE #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC < @DT_ADM
                                    AND #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC     
                                            )
                AND YEAR(EXAME.ID_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO

                ORDER BY #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
                         #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
                         #T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC
        END



    -- Dropa a tabela depois de trazer os dados
    DROP TABLE #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO
    DROP TABLE #T_SP_CMO_SEL_REL_FICHA_ADMISSAO
    DROP TABLE #T_SP_CMO_SEL_REL_FICHA_FUNCAO
    DROP TABLE #MATRICULA
    DROP TABLE #FUNCIONARIOS_ATIVOS

end
    
asked by anonymous 17.04.2017 / 14:26

1 answer

2

One solution to this filter is to convert it as an integer:

DECLARE @ANO_DT_DE_LAUDO INT
DECLARE @ANO_DT_ATE_LAUDO INT

SET @ANO_DT_DE_LAUDO = YEAR(@DT_DE_LAUDO)
SET @ANO_DT_ATE_LAUDO = YEAR(@DT_ATE_LAUDO)

In the where clauses, you change the variable:

AND YEAR(EXAME.ID_EXM_REA) BETWEEN @ANO_DT_DE_LAUDO AND @ANO_DT_ATE_LAUDO

If you can also change the prototype of your procedure, it is another solution:

ALTER proc [dbo].[SP_CMO_SEL_PORTARIA_ATIVOS]  

    @ID_XFC_Inicial int,
    @ID_XFC_Final  int,
    @ID_EMP int,
    @ID_UNI_EMP int,
    @ID_XFC_GRP     VarChar( 1000 )= '',
    @DT_ADM DATETIME,
    @DT_DE_LAUDO INT,
    @DT_ATE_LAUDO INT

as
SET NOCOUNT ON  

Begin
.....

And in the call, you will directly pass the year:

EXEC [dbo].[SP_CMO_SEL_PORTARIA_ATIVOS]  ..., YEAR(DT_DE_LAUDO), YEAR(DT_ATE_LAUDO)
    
17.04.2017 / 15:57