Sql server Select的Where子句中的SQL Server CASE语句

Sql server Select的Where子句中的SQL Server CASE语句,sql-server,Sql Server,我试图使用WHERE子句中的case语句从表中进行选择。这是一个接受多个输入字符串的存储过程。我有一个变量@Region,它的值可以是('ALL','NE','NY','PA') 我正在尝试这样做: SELECT sum(ElectricTotalBudgetCost) FROM dbo.Properties WHERE aYear=@ParamYear and aMonth=@ParamMonth AND Properties.StateRegion= CASE WH

我试图使用WHERE子句中的case语句从表中进行选择。这是一个接受多个输入字符串的存储过程。我有一个变量@Region,它的值可以是('ALL','NE','NY','PA')

我正在尝试这样做:

SELECT sum(ElectricTotalBudgetCost)
FROM dbo.Properties 
WHERE aYear=@ParamYear and aMonth=@ParamMonth AND
Properties.StateRegion=
    CASE
        WHEN  @Region ='ALL' THEN '%'
        ELSE @Region
    END
我还尝试了将“%”替换为非NULL。我还尝试使用WHEN@Region='ALL',然后像“%”一样

在所有情况下,当“all”传递给过程时,都会出现语法问题或出现空结果。我猜我是看错了。我花了很多时间研究,似乎想不出其他方法来实现这一点。我是SQL的新手,如果有人能提供帮助,我将不胜感激

也许可以代替:

 CASE
        WHEN  @Region ='ALL' THEN '%'
        ELSE @Region
    END
使用:

这假设当选择“全部”时,您不希望应用任何筛选。 它进一步假设@Region只包含一个值('NE'、'NY'、'PA'),而不是多个值;NE、NY和PA是属性中的值。StateRegion可以代替:

 CASE
        WHEN  @Region ='ALL' THEN '%'
        ELSE @Region
    END
使用:

这假设当选择“全部”时,您不希望应用任何筛选。
它进一步假设@Region只包含一个值('NE'、'NY'、'PA'),而不是多个值;NE、NY和PA是属性中的值。StateRegion

你真的要这么做吗

SELECT sum(ElectricTotalBudgetCost)
FROM dbo.Properties 
WHERE aYear=@ParamYear and aMonth=@ParamMonth AND
(Properties.StateRegion=@Region or @Region = 'ALL')

如果“all”是@Region的值,这将返回所有行。您真的要这样做吗

SELECT sum(ElectricTotalBudgetCost)
FROM dbo.Properties 
WHERE aYear=@ParamYear and aMonth=@ParamMonth AND
(Properties.StateRegion=@Region or @Region = 'ALL')

如果“all”是@Region的值,则返回所有行。您可以将语句更改为使用
Properties.StateRegion类似@Region
,在
选择
语句之前,您可以使用此if语句:

IF @Region = 'ALL'
BEGIN
    SET @Region = '%'
END

使用
LIKE
将有助于将您的列与@Region中的任何单词进行匹配,
%
字符将有助于查找所有列。

您可以将语句改为使用
Properties.StateRegion LIKE@Region
,在选择
语句之前,您可以使用以下IF语句:

IF @Region = 'ALL'
BEGIN
    SET @Region = '%'
END

一样使用
将有助于将您的列与@Region中的任何单词进行匹配,
%
字符将有助于查找所有列。

非常感谢!那是为了我。(你所有的假设都是正确的)非常感谢!那是为了我。(你所有的假设都是正确的)谢谢你的意见。我选择了另一个答案,因为我可能需要在一次选择中完成这一切。您的方法将进入我的SQL工具包!谢谢你的意见。我选择了另一个答案,因为我可能需要在一次选择中完成这一切。您的方法将进入我的SQL工具包!