当记录活动在两个日期之间时创建SSRS图表

时间:2014-02-07 12:02:56

标签: sql date reporting-services charts

我在试图找出如何在SSRS图表(2008)中表示某些日期确定数据时遇到一些问题

在我的查询中,每个人都有开始日期,结束日期和职位类型=永久或临时。位置记录在positionstart和结束日期之间或之间有效。我已经过滤了我的查询,只包括在两个参数日期之间有活跃位置的人。

我想要的折线图是在任何给定的月份显示有关活动位置的PositionId的CountDistinct的人数,其中一行为永久性,一行为临时性。

Field names: 
PeopleId
PositionId
PositionStartDate
PositionEndDate
PositionType

参数名为StartDate和EndDate

我很困惑!

所有帮助表示感谢,谢谢 EILS

1 个答案:

答案 0 :(得分: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图表中使用此查询的结果。