我在试图找出如何在SSRS图表(2008)中表示某些日期确定数据时遇到一些问题
在我的查询中,每个人都有开始日期,结束日期和职位类型=永久或临时。位置记录在positionstart和结束日期之间或之间有效。我已经过滤了我的查询,只包括在两个参数日期之间有活跃位置的人。
我想要的折线图是在任何给定的月份显示有关活动位置的PositionId的CountDistinct的人数,其中一行为永久性,一行为临时性。
Field names:
PeopleId
PositionId
PositionStartDate
PositionEndDate
PositionType
参数名为StartDate和EndDate
我很困惑!
所有帮助表示感谢,谢谢 EILS
答案 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图表中使用此查询的结果。