案例陈述中的表达 - 条件WHERE

时间:2011-12-21 18:12:53

标签: sql-server-2005 tsql

我正在寻找一种解决办法或解决方案,我只想使用CASE语句基于两个条件执行表达式。我写了一些模拟伪代码来说明我想要做的事情。

WHERE (RN = 1)
AND
    CASE
        WHEN (@ApplicationName  '' OR @ApplicationGroup  '')
            THEN 

                AND (
                    @AppFilterType = 'Groups' AND [GroupName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationGroup))
                    OR
                    @AppFilterType = 'Apps' AND [AppName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationName))
                )
    END

这是一个想法,只有在@ApplicationName和/或@ApplicationGroup有值时执行条件。

我在SQL Server 2005上运行的T-SQL存储过程中使用它。

这有可能吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

WHERE RN = 1
    AND (
            (@ApplicationName = '' and @ApplicationGroup = '')
            or (
                    (@AppFilterType = 'Groups' AND [GroupName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationGroup)))
                    or (@AppFilterType = 'Apps' AND [AppName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationName)))
                )
        )