我在尝试弄清楚如何在SSRS图表(2008)中表示某些日期确定的数据时遇到了一些问题
在我的查询中,每个人都有一个开始日期、一个结束日期和一个职位类型 = 永久或临时。 仓位记录在仓位开始日期和结束日期之间处于活动状态。 我已经过滤了我的查询,只包括两个参数日期之间处于活动位置的人。
我希望折线图做的是显示任何给定月份活跃职位的 CountDistinct of PositionId 的人数,其中一条线表示永久,一条线表示临时。
Field names:
PeopleId
PositionId
PositionStartDate
PositionEndDate
PositionType
参数名为"开始日期"和"结束日期"
我很卡住!
感谢所有帮助,谢谢艾尔斯
我使用 SQL 公用表表达式 (CTE) 生成我需要的时间表,然后根据需要联接或子查询其他表:
;
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 图表中使用此查询的结果。