【问题标题】:SQL Server Reporting Services and Report DevelopmentSQL Server 报告服务和报告开发
【发布时间】:2014-03-21 20:31:16
【问题描述】:
我有四个数据集,分别是计划、预测、实际和 SPLY,每个产品线都有八个不同的产品线。如果实际高于或低于计划和/或预测,我想添加背景颜色的条件格式。报告需要正确导出到 Excel。有没有一种方法可以使用一个控件而不是多个文本框来显示数据,允许条件格式并导出到 Excel?谢谢!
环境:
SSRS 2010
SQL Server 2012
【问题讨论】:
标签:
sql
sql-server
excel
reporting-services
report
【解决方案1】:
伟大的问题湖岸。我看到了两种可能性:
-
将数据集连接到一个数据集中,以便结果返回每个产品线的计划、预测和实际值。然后你可以简单地设置背景:
=iif(Fields!Plan.Value > Fields!Actual.Value,"Pink","LightGreen")
-
使用 Lookup 函数根据产品线引用来自不同数据集的值:
=iif(Lookup(Fields!ProductLine.Value,Fields!ProductLine.Value,
Fields!Plan.Value,"Plan") > Fields!Actual.Value,"Pink","LightGreen")
【解决方案2】:
在报表的 SQL 语句中将数据连接在一起,以便在同一数据集中获得包含产品、实际、计划和预测的一行。然后,您可以对要有条件地格式化的文本框的背景颜色使用表达式。
这是一个例子:
=IIF(Fields!Actual.Value >= Fields!Plan.Value, "Green", "Red")
另请参阅此线程以获取更多详细信息:
SSRS Field Expression to change the background color of the Cell
或者你可以使用一个 switch 语句,如果 Actual 低于计划和预测,则将其设为红色,如果高于或等于两者,则设为绿色,否则(假定实际高于一个并低于另一个)make黄色:
=Switch(Fields!Actual.Value < Fields!Plan.Value and Fields!Actual.Value < Fields!Forecast.Value
, "Red"
, Fields!Actual.Value >= Fields!Plan.Value and Fields!Actual.Value >= Fields!Forecast.Value
, "Green"
, 1=1, "Yellow")