привет всем я создаю консультацию для того, чтобы меня возвратила в месяц некая информация просачиваясь в месяц и год, в год у меня есть переменная @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
Он проверяет, что твоя переменная была типа INT, и что Ваша стоимость была отличной от NULL, так как я реализовывал доказательство, и если оно я функционирует правильно.
DECLARE @year int
SET @year = 2019
SELECT *
FROM TABLA
WHERE YEAR(Fecha) = @year --2019
WHERE
. – Luis Cazares 08.11.2019, 20:26