2014-02-07 66 views
0

我在試圖找出如何表示某個日期在SSRS圖表確定數據的一些問題之間的記錄主動瀑布(2008)當兩個日期

我的查詢中,每個人都有一個開始創建SSRS圖日期,結束日期和職位類型=永久或臨時。位置記錄在位置開始日期和結束日期之間或之間激活。我已經過濾了我的查詢,只包含在兩個參數日期之間有活動位置的人員。

我想讓折線圖做的是在任意給定的月份顯示CountDistinct爲PositionId的活躍頭寸的人數,一行爲永久性,一行爲臨時性。

Field names: 
PeopleId 
PositionId 
PositionStartDate 
PositionEndDate 
PositionType 

參數被命名爲起始日期日期和結束日期

我很卡!

感謝所有幫助,感謝 EILS

回答

0

我使用SQL Common Table Expressions (CTEs)生成我需要的時間表,然後再加入或子查詢其他表需要:

; 
WITH MonthsCTE 
      AS (
       SELECT 
       1 AS MonthID , 
       DATEADD(MONTH, DATEDIFF(month, 0, @StartDate), 0) AS MonthStart , 
       DATEADD(MONTH, DATEDIFF(month, 0, @StartDate) + 1, 0) AS NextMonthStart 
       UNION ALL 
       SELECT 
       MonthId + 1 , 
       DATEADD(MONTH, 1, MonthStart) , 
       DATEADD(MONTH, 1, NextMonthStart) 
       FROM 
       MonthsCTE 
       WHERE 
       NextMonthStart < @EndDate 
      ), 
     PositionTypes 
      AS (
       SELECT DISTINCT 
       PositionType 
       FROM 
       PeopleTable 
      ) 
    SELECT 
     MonthStart , 
     PositionType , 
     (
      SELECT 
      COUNT(*) 
      FROM 
      PeopleTable 
      WHERE 
      PeopleTable.PositionType = pType.PositionType 
      AND PositionStartDate < MonthsCTE.NextMonthStart 
      AND PositionEndDate >= MonthsCTE.MonthStart 
     ) AS PersonCount 
    FROM 
     MonthsCTE 
     CROSS JOIN PositionTypes AS PType 

您應該能夠很容易在SSRS圖表中使用此查詢的結果。

+0

謝謝!我會給這個鏡頭.. – EileenS