1

そして、月ごとの合計として表示します。次のスクリプトを使用します

SELECT datepart(yy,j.CompletedAt) as 'YY',  
       str(datepart(MM, j.CompletedAt),2) as 'MM', 
       Datename(MM,j.CompletedAt) as 'Month', 
       count('MM') as 'PMInMonth'
FROM facts_reactive.dbo.jobs j 
WHERE (
       (J.Reactive = -1)     
         AND datepart(yy,j.CompletedAt) = ' 2013'
         AND j.jobstatus = 6
       )
GROUP BY datepart(yy,j.CompletedAt),  
         str(datepart(MM, j.CompletedAt),2), 
         Datename(MM,j.CompletedAt)
ORDER BY datepart(yy,j.CompletedAt) ASC,  
         str(datepart(MM, j.CompletedAt),2) ASC;

ただし、その月にキャンセルされたジョブがない場合は、何も返されません。一方、キャンセルされたジョブの数として月と 0 が返されるようにします。

これは可能ですか?

よろしくお願いします。

ロブ

4

1 に答える 1

1
;WITH cMONTHS AS
(
    SELECT
        CAST('20130101' AS date) AS TheMonthStart,
        CAST('20130201' AS date) AS TheMonthEnd
    UNION ALL
    SELECT
        DATEADD(mm, 1, TheMonthStart),
        DATEADD(mm, 1, TheMonthEnd)
    FROM cMONTHS
    WHERE TheMonthStart < '20140101'
)
SELECT
   datepart(yy,c.TheMonthStart) as 'YY',  
   str(datepart(MM, c.TheMonthStart),2) as 'MM', 
   Datename(MM,c.TheMonthStart) as 'Month', 
   count(j.CompletedAt) as 'PMInMonth'
FROM
     cMONTHS c
     LEFT JOIN
     facts_reactive.dbo.jobs j ON j.CompletedAt >= c.TheMonthStart AND j.CompletedAt < c.TheMonthEnd
                   AND
                   J.Reactive = -1   
                   AND
                   j.jobstatus = 6
GROUP BY
   datepart(yy,c.TheMonthStart),  
   str(datepart(MM, c.TheMonthStart),2), 
   Datename(MM,c.TheMonthStart)
ORDER BY
   datepart(yy,c.TheMonthStart),  
   str(datepart(MM, c.TheMonthStart),2);
于 2013-06-17T15:38:46.607 に答える