我正在寻找一种解决办法或解决方案,我只想使用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存储过程中使用它。
这有可能吗?
提前感谢您的帮助。
答案 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)))
)
)