Visual studio Visual Studio 2017-基于月份的条件列可见性
我有一份报告,其中有第1-31列(第1天称为第1列,第30天称为第30列…),其中填充了每月每一天的生产值。这是一份月度报告,因此输入月份和年份,并按天显示数据。很简单,数据来自使用透视的SQL存储过程 如果每个月有31天,这将不是一个问题…但当然,我们有30天的月份,用户希望在只有30天的月份中隐藏第31天。我的视觉学习能力充其量也很弱,但我之前的开发人员做到了这一点:Visual studio Visual Studio 2017-基于月份的条件列可见性,visual-studio,reporting-services,Visual Studio,Reporting Services,我有一份报告,其中有第1-31列(第1天称为第1列,第30天称为第30列…),其中填充了每月每一天的生产值。这是一份月度报告,因此输入月份和年份,并按天显示数据。很简单,数据来自使用透视的SQL存储过程 如果每个月有31天,这将不是一个问题…但当然,我们有30天的月份,用户希望在只有30天的月份中隐藏第31天。我的视觉学习能力充其量也很弱,但我之前的开发人员做到了这一点: =IIF(InStr("2,4,6,9,11", Parameters!Month.Value) > 0,True,F
=IIF(InStr("2,4,6,9,11", Parameters!Month.Value) > 0,True,False)
这适用于除1月以外的所有情况…主要是因为我知道它没有解析逗号之间的值,只查看该数字是否在列表中…因为1在11中,1月31日在不应该的时候被删除
奖励积分-除了闰年,你知道如何隐藏2月的第29列吗?最好的长期解决方案是有一个日期表。有很多脚本可以生成一个,比如 然后,SP或dataset查询将日期表用作主表,并保留与实际数据的联接。差不多
SELECT a.*
FROM myDateTable d
LEFT JOIN myActualTable a on d.date = a.date
WHERE a.date BETWEEN @myStartDate AND @myEndDate
。。你明白了
然后在SSRS中使用矩阵控件并为日期添加列组。通过这种方式,您不需要对可见性做任何事情,因为首先不会生成列
这样做的好处是,它还有助于将来的查询/报告等
编辑我刚注意到您说SP会旋转数据。不要以数据为轴心,让SSR来处理,这要容易得多。最好的长期解决方案是有一个日期表。有很多脚本可以生成一个,比如 然后,SP或dataset查询将日期表用作主表,并保留与实际数据的联接。差不多
SELECT a.*
FROM myDateTable d
LEFT JOIN myActualTable a on d.date = a.date
WHERE a.date BETWEEN @myStartDate AND @myEndDate
。。你明白了
然后在SSRS中使用矩阵控件并为日期添加列组。通过这种方式,您不需要对可见性做任何事情,因为首先不会生成列
这样做的好处是,它还有助于将来的查询/报告等
编辑我刚注意到您说SP会旋转数据。不要以数据为中心,让SSR来处理,这会容易得多