SSRS 矩阵中的交替行颜色表达式无法正常工作

Alternating row color expression in SSRS matrix not working correctly

在唯一的行组中,我尝试使用以下表达式获取备用行颜色:

背景色表达式:=IIf( RunningValue (Fields!SP.Value, CountDistinct, Nothing) MOD 2, "White", "blue")

SQL code: 

select
ROW_NUMBER() OVER (ORDER BY DataDate) AS SSRSRowNumber
,datepart(dw,datadate) SSRSDateFilter 
,DataDate
,SP
,sum(TMI) as TotalCI
from table
where DataDate>GETDATE()-20
group by DataDate,SP
order by 1, 2

结果就是下图,上面列出的表达式有什么问题吗?

编辑-:Solution

在我的行组和列组之间没有交集的情况下,我遇到过这种情况。

示例: - 我有存储过程 1 和 2

  • 1月1日,1和2都运行,所以记录下来

  • 1/2,只有1个需要运行,所以我只记录1个

  • 1/3,他们又运行,所以我都录了

我将在 sp 2 的 1/2 上有一个看起来很乱的单元格(颜色不会改变),因为 SSRS 无法计算 运行ning 总计的新值(它仍然是 1)。在 3 上,它识别一个值并得到 运行ning 值现在是 3,因此着色按预期恢复。

为了解决这个问题,您可以执行 cross apply 来获取所有日期和 SP 的笛卡尔积,这样每个不同的日期都有一行对应每个不同的日期,并将其存储在临时文件中 table.将您当前的查询存储在临时 table 或 CSV 中,并加入您基于 cross apply 的查询。这将确保没有遗漏细胞。请注意,这会对性能产生影响,因此请相应地进行测试(很可能可以忽略不计)。

如果您需要编写查询方面的帮助,请告诉我。

数据中缺少日期导致背景行颜色无法正常工作。

您可能会浪费大量时间来尝试使您的查询正常工作。

或者您可以只使用交替行颜色功能。

Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
         ByVal EvenColor As String, ByVal Toggle As Boolean) As String
    If Toggle Then bOddRow = Not bOddRow
    If bOddRow Then
        Return OddColor
    Else
        Return EvenColor
    End If
End Function

对于控制颜色的第一列:

=Code.AlternateColor("AliceBlue", "White", True)

对于剩余的列,不要切换第三个参数:

=Code.AlternateColor("AliceBlue", "White", False)

您可能需要切换矩阵中第一列的颜色。