我有一个脚本,我允许用户生成报告。他们选择选项,其中一个下降是位置。它包含一个地方列表,第一个选项是“ALL”。
当您选择全部时,我希望它包含位置列中的任何内容。
这是我目前的陈述。
IF (@action = 'searchActivityLog')
IF (@type = 'actor')
BEGIN
SELECT actor,
action,
CONVERT (VARCHAR (20), timestamp, 100) AS timestamp,
[key],
location
FROM Keys_Log
WHERE actor = @data AND location = @location
ORDER BY timestamp asc
FOR XML PATH ('results'), TYPE, ELEMENTS, ROOT ('root');
END
ELSE
有没有办法基本上说如果Location = All那么甚至不包括where子句中的那个?
答案 0 :(得分:4)
你能否加入
location = @location OR @location = 'All'
在where子句中。
唯一的另一个选择是Dynamics SQL - 但这会让事情变得更复杂。参见
http://www.techrepublic.com/blog/the-enterprise-cloud/generate-dynamic-sql-statements-in-sql-server/示例。