SSRS:自定义区域条形图(甘特图)——根据表情不同颜色

SSRS: customize area bar chart (gantt chart) — different colors based on expression

我有一个如图所示的数据集,但行数更多

Table

我的项目中有员工姓名和他们的资格,假期和假期 ID 的开始日期和结束日期。

然后我根据这个数据集做了一个面积条形图(甘特图)。行按 vacation_id 分组,行首是假期开始日期,行尾是假期结束日期。纵轴显示工人姓名,横轴显示当月日期。 现在所有的线都是蓝色的。但是,如果那些在我的项目中具有相同资格的员工的假期按日期重叠,我需要将线条颜色切换为红色。 可以这样做吗?

无法识别图表中的重叠日期 - 您需要添加一个字段来指示 SQL 中的重叠。

如果您将当前数据放在临时 table 中,那么您可以检查重叠:

SELECT 'A' EMP, '2019-11-08' START_VACA, '2019-11-13' END_VACA, 'QA' ROLE
INTO #VACA 
UNION
SELECT 'B' EMP, '2019-11-08' START_VACA, '2019-11-25' END_VACA, 'PM' ROLE
UNION
SELECT 'C' EMP, '2019-11-13' START_VACA, '2019-11-28' END_VACA, 'PM' ROLE
UNION
SELECT 'D' EMP, '2019-11-02' START_VACA, '2019-11-20' END_VACA, 'FD' ROLE
UNION
SELECT 'E' EMP, '2019-11-10' START_VACA, '2019-11-13' END_VACA, 'QA' ROLE

SELECT V.*, CASE WHEN V1.EMP IS NOT NULL THEN 1 ELSE 0 END AS OVERLAP
FROM #VACA V
LEFT JOIN #VACA V1 ON V1.ROLE = V.ROLE AND V1.EMP <> V.EMP
                    AND (
                        V1.START_VACA BETWEEN V.START_VACA AND V.END_VACA
                        OR
                        V1.END_VACA BETWEEN V.START_VACA AND V.END_VACA
                        OR
                        V.START_VACA BETWEEN V1.START_VACA AND V1.END_VACA
                        OR
                        V.END_VACA BETWEEN V1.START_VACA AND V1.END_VACA
                        )

有了重叠记录的指示器后,就可以为图表系列的颜色创建表达式。

=IIF(Fields!.OVERLAP.Value = 1, "RED", "BLUE")