2014-10-16 4 views
0

그주의 시간이 있든 없든 관계없이 한 달에 한해 모든 주 번호를 보여줄 수 있어야합니다.항상 비어있는 주 표시

2.00 2 July 
2.25 3 July 
7.25 5 July 

이 사람 :이

변경 나는 모든 주 번호를 표시하려면 기본적으로

SELECT SUM(te.Hours_Bill) AS HoursBilled 
    , DATEPART(dd, DATEDIFF(dd, 0, te.Date_Start)/7 * 7)/7 + 1 AS HoursWeekNumber 
    , DATENAME(mm, te.Date_Start) AS HoursMonthName 

FROM AGR_Header ah 
     INNER 
     JOIN Time_Entry te 
      ON te.Agr_Header_RecID = ah.AGR_Header_RecID 
     INNER 
     JOIN Company co 
      ON co.Company_RecID = ah.Company_RecID 

WHERE (te.Date_Start >= DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) -6, 0) AND te.Date_Start <= DATEADD(mm, DATEDIFF(mm, -1, GETDATE()) -1, -1)) 

GROUP 
    BY DATEPART(dd, DATEDIFF(dd, 0, te.Date_Start)/7 * 7)/7 + 1 
    , DATENAME(mm, te.Date_Start) 
    , DATEPART(mm, te.Date_Start) 

ORDER 
    BY DATEPART(mm, te.Date_Start) ASC 
    , DATEPART(dd, DATEDIFF(dd, 0, te.Date_Start)/7 * 7)/7 + 1 ASC 

: 여기

0.00 1 July 
2.00 2 July 
2.25 3 July 
0.00 4 July 
7.25 5 July 

내가 함께 일하고 현재 쿼리입니다 한 달 동안 결과가 나타나지 않을 경우 0을 표시하십시오.

+0

를 사용하여 외부 테이블에 "한달에 주 번호"의 (또는 CTE)에 가입하는 데 도움이 될 수 있습니다. –

답변

0

이것은

CREATE TABLE #t 
    (
    hr  NUMERIC(22, 6), 
    weekno INT, 
    mon VARCHAR(20) 
) 

INSERT INTO #t 
VALUES 
(2.00 , 2 , 'October'), 
(2.25 , 3 , 'October'), 
(7.25 , 5 , 'October') 

WITH dates AS (
    SELECT 1 id,datename(month,(getdate())) mon 
    UNION ALL 
     SELECT id+1, mon FROM dates WHERE id<5 
) 
SELECT Isnull(hr, 0) hrs, 
     id AS weekno, 
     d.mon AS [month] 
FROM #t t 
     RIGHT JOIN dates d 
       ON t.mon = d.mon 
        AND t.weekno = d.id 

출력

hrs  weekno month 
0.000000 1  October 
2.000000 2  October 
2.250000 3  October 
0.000000 4  October 
7.250000 5  October 
관련 문제