2016-06-23 6 views
0

나는 실제로 도움이 될 수 있습니다. CTE 내에있는 VARCHAR 보고서 매개 변수에서 1을 뺍니다. 나는이 작품을 잘 R2TSQL Substract에서 보고서 매개 변수를 가져와 지난 달에

SQL 2008에서 일하고 있어요 :

AND MONTH(CAST(c.DATETIME AS DATE)) = CONVERT(INT,@Maand) 

을하지만 이것은 단지 작동하지 않습니다

여기

이 중 일부입니다

AND MONTH(CAST(c.DATETIME AS DATE)) = CONVERT(INT,@Maand) -1 

감사 제 코드 :

ALTER PROCEDURE [rpt].[usp_F_Telefonie_Bereikbaarheid](@Jaar AS VARCHAR(4), @Maand AS VARCHAR(2)) 
AS 
BEGIN 

WITH CTE AS(
SELECT 
    C.DATETIME AS Datum 
    ,d.NAME 
    ,COUNT(Callid) AS Aantal 
    ,'Vorige' AS Gesprekken 
    ,DURATIONSEC 
FROM DM.dm.F_CDRS AS c 
JOIN DM.dm.D_DEPARTMENTS AS d 
ON d.DEPARTMENTID = c.DEPARTMENTID 
WHERE Direction = 1 
AND YEAR(CAST(c.DATETIME AS DATE)) = @Jaar 
AND MONTH(CAST(c.DATETIME AS DATE))= CONVERT(INT,@Maand) 
AND WAITTIMESEC <=10 
GROUP BY LEFT(D.NAME, 2), D.NAME, C.DATETIME, DURATIONSEC 
) 
SELECT 
    ,CASE CTE.Gesprekken 
    WHEN 'Vorige' 
    THEN SUM(CTE.Aantal) 
    END AS Vorige 
FROM CTE 
WHERE MONTH(CAST(CTE.Datum AS DATE)) = @Maand 
AND YEAR(CAST(CTE.Datum AS DATE)) = @Jaar 
GROUP BY CTE.NAME, CTE.Gesprekken, CTE.DURATIONSEC, CTE.Aantal 
+0

당신이 원하는 결과를 오류를 얻거나 그냥 있습니까? –

답변

0

rt varchar -> datetime을 입력 한 다음 datediff 함수를 사용하십시오.

대신이 :

YEAR(CAST(c.DATETIME AS DATE)) = @Jaar 
AND MONTH(CAST(c.DATETIME AS DATE))= CONVERT(INT,@Maand) 

사용 :

datediff(month, cast(@Jaar + right('0' + @Maand, 2) + '01' as datetime), c.[datetime]) = 1