根据不同的值标记细胞

时间:2012-01-27 14:49:27

标签: reporting-services

有没有办法标记包含与组中其他值不同的值的单元格? Examle:

GroupId | Col1   | Col2
1       |    1   |    2
1       |    1   |    2
2       |    5   |    2
2       |    6   |    2
3       |    1   |    4
3       |    1   |    4
3       |    1   |    5
4       |    3   |    1
4       |    3   |    4
  • 在单元格中的第一组(GroupId = 1)值相同,无处可做
  • 在第二组(GroupId = 2)中,列Col1中的值单元格不同,我需要将GroupId = 2 Col1中的单元格标记为红色
  • 在Col2中的第三组(GroupId = 3)中,有不同的值,需要在Col2中标记所有单元格,其中GroupId = 3为红色

P.S。值可以是字符串或数字,组的大小> = 2行

1 个答案:

答案 0 :(得分:0)

完成此操作的最简单方法是在查询中添加字段,或向您报告第二个查询。

第二个数据集可能类似于

SELECT
GroupID,
CASE WHEN COUNT(DISTINCT Col1) > 1 THEN 1 ELSE 0 END AS HighlightCol1,
CASE WHEN COUNT(DISTINCT Col2) > 1 THEN 1 ELSE 0 END AS HighlightCol2
FROM MyTable
GROUP BY GroupID

然后,您可以使用LOOKUP函数(在SSRS 2008R2中添加)设置公式,该函数将根据当前数据集中的参考值从第二个数据集中检索值。

=IIF(LOOKUP(
        Fields!GroupID.Value,
        Fields!GroupID.Value,
        Fields!HighlightCol1.Value,
        "DataSet2Name") = 1,
     "red",
     "white")

如果您使用的是早于2008R2的SSRS,我会考虑在当前数据集中添加新字段。然后你可以跳过LOOKUP函数。

您可以在报告图层中完成相同的操作,但这比上述解决方案稍微复杂一些。