CASE表达式可在SQL Server中使用,但不能在Visual Studio Reporting Services中使用

问题描述 投票:0回答:1

有一个where语句:

WHERE (@obsolete=(case  when part.drawissno = 'OBS' then 'OBS' else 'NO' end) or @obsolete is null)
and ((CASE WHEN part.sm = 'MANUFACTURED' THEN mpfmain.mpflang END) = @country or @country IS NULL)

参数在SQL Server中正常工作,但是当将其添加到报表中时,除空值之外的所有值均不起作用。参数@ country的值:德国,西班牙,法国,意大利。仅当用户必须自己输入国家时,报告中的参数才有效。如果在参数属性中写入可用值,则它们将不起作用。其他参数(此处未包括在内)可以正常工作,但它们内部没有CASE。 CASE表达式可能是问题吗?

sql sql-server reporting-services reporting
1个回答
0
投票

我看到第二个CASE表达式有2个可能的问题:

1]如果mpfmain.mpflang为NULL,则将其与带有等号的NULL进行比较。即使@country也为NULL,这也不起作用。

2)您缺少ELSE零件。它当然不是强制性的,但是请考虑如果part.sm为NULL或part.sm具有不同于“ MANUFACTURED”的值,会发生什么。

您可能会受益于列或参数周围的ISNULL方法,而不是NULL。您可以在此处阅读有关ISNULL方法的更多信息:

https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql

© www.soinside.com 2019 - 2024. All rights reserved.