Reporting services SSRS中的开关表达式:参数“VarExpr”不是有效值”

Reporting services SSRS中的开关表达式:参数“VarExpr”不是有效值”,reporting-services,ssrs-expression,Reporting Services,Ssrs Expression,我想根据诊所是私人诊所还是公共诊所对我的结果进行分组,因此为此,我尝试根据上述切换条件创建一个新字段。 如果heorg_refno=7539或heorg_refno=7609或heorg_refno=7541,则该诊所应为公共诊所,否则该诊所应为私人诊所 任何建议我在switch语句中做错了什么。原因之一可能是字段!HEORG\u REFNO.Value实际上不包含整数值,而是字符串值。在这种情况下,您必须与字符串进行比较: =switch( Fields!HEORG_REFNO.Val

我想根据诊所是私人诊所还是公共诊所对我的结果进行分组,因此为此,我尝试根据上述切换条件创建一个新字段。 如果heorg_refno=7539或heorg_refno=7609或heorg_refno=7541,则该诊所应为公共诊所,否则该诊所应为私人诊所


任何建议我在switch语句中做错了什么。

原因之一可能是字段!HEORG\u REFNO.Value实际上不包含整数值,而是字符串值。在这种情况下,您必须与字符串进行比较:

=switch(
    Fields!HEORG_REFNO.Value=7535,"public", 
    Fields!HEORG_REFNO.Value=7539,"public",
    Fields!HEORG_REFNO.Value=7609,"public",
    Fields!HEORG_REFNO.Value=7541,"public",
    true,"private"
)
您需要检查SSRS数据集中HEORG_REFNO列的类型

根据我的经验,在数据集中创建一个伪列是一个好主意,这样可以过滤掉数据,而不是在表达式中放入太多的内容


后者迟早会导致混淆。

是的,我正在数据集中添加另一列,并使用此表达式创建该列(如果这是您想要说的话)?否。我是说,对于您的报表,必须有一个SELECT语句来查询数据库中的信息。有时,最好在该select语句中的ed列,而不是在报表中使用表达式。类似于当RefNo=7535时选择CASE,然后“public”或“private”结束为tablename中的FakeColumn。更改了我的答案,因为上一个答案是错误的。如果我将此列添加到报表中,则只会给出一行输出,但如果我排除该列,则会给出一行输出获取121495行。此外,渲染所需的时间相同。错误与主要问题中提到的相同。那么,您的语句是错误的。请先在Sql Server Management Studio中尝试您的语句,然后将其添加到您的报告中。我说不出是什么错误。此外,Sql语句不是您问题的主题。您可以我可以试试我的改进答案。也许这有帮助?
 =Switch 
 (
    Fields!HEORG_REFNO.Value="7535","public", 
    Fields!HEORG_REFNO.Value="7539","public",
    Fields!HEORG_REFNO.Value="7609","public", 
    Fields!HEORG_REFNO.Value="7541","public",
    true, "private"
 )