просачиваться в месяц и год

привет всем я создаю консультацию для того, чтобы меня возвратила в месяц некая информация просачиваясь в месяц и год, в год у меня есть переменная @YEAR, но если я использую переменную, он не выдает меня и когда я снимаю переменную и заменяю ее из-за года числом, если он выдает меня.

этот моя консультация

я использую SQL server

SELECT 

SUM(CASE WHEN MONTH(A.Due_Date) = 1 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1 ELSE 0 END) as 'MANTENIMIENTO PM CERRADAS',
    
SUM(CASE WHEN MONTH(A.Due_Date) = 1 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1 ELSE 0 END) as 'TOTAL MANTENIMIENTO PM', 
    
SUM(CASE WHEN MONTH(A.Due_Date) = 1 AND YEAR(A.Due_Date) = @YEAR AND  A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1
    ELSE 0 END) * 100 /NULLIF(SUM(CASE WHEN MONTH(A.Due_Date) = 1 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1
    ELSE 0 END),0)  as 'PORCENTAJE REALIZADO MANTENIMIENTO PM',


SUM(CASE WHEN MONTH(A.Due_Date) = 2 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1 ELSE 0 END) as 'MANTENIMIENTO PM CERRADAS',
    
SUM(CASE WHEN MONTH(A.Due_Date) = 2 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1 ELSE 0 END) as 'TOTAL MANTENIMIENTO PM', 
    
SUM(CASE WHEN MONTH(A.Due_Date) = 2 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1
    ELSE 0 END) * 100 /NULLIF(SUM(CASE WHEN MONTH(A.Due_Date) = 2 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1
    ELSE 0 END),0)  as 'PORCENTAJE REALIZADO MANTENIMIENTO PM',


SUM(CASE WHEN MONTH(A.Due_Date) = 3 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1 ELSE 0 END) as 'MANTENIMIENTO PM CERRADAS',
    
SUM(CASE WHEN MONTH(A.Due_Date) = 3 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1 ELSE 0 END) as 'TOTAL MANTENIMIENTO PM', 
    
SUM(CASE WHEN MONTH(A.Due_Date) = 3 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 AND A.Work_Request_Status_Key = 49 THEN 1
    ELSE 0 END) * 100 /NULLIF(SUM(CASE WHEN MONTH(A.Due_Date) = 3 AND YEAR(A.Due_Date) = @YEAR AND A.Work_Request_Type_Key = 54 THEN 1
    ELSE 0 END),0)  as 'PORCENTAJE REALIZADO MANTENIMIENTO PM',


FROM Maintenance_v_Work_Request_e A
0
задан 08.11.2019, 19:46
1 ответ

Он проверяет, что твоя переменная была типа INT, и что Ваша стоимость была отличной от NULL, так как я реализовывал доказательство, и если оно я функционирует правильно.

    DECLARE @year int 

    SET @year = 2019

    SELECT *
    FROM TABLA
    WHERE YEAR(Fecha) = @year --2019
0
ответ дан 01.12.2019, 12:15
  • 1
    Это anti-patró n SQL, который запрещает использовать í ndices. Он рекомендуемый не использовать функции на колоннах в статье WHERE. –  Luis Cazares 08.11.2019, 20:26

Теги

Похожие вопросы