2

我有一个脚本,允许用户生成报告。他们选择选项,其中一个下拉菜单是位置。它包含一个地点列表,第一个选项是“全部”。

当您全选时,我希望它包含位置列中的任何内容。

这是我目前的声明。

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 子句中?

4

1 回答 1

4

你能包括

location = @location OR @location = 'All'

在 where 子句中。

唯一的其他选择是 Dynamics SQL - 但这会使事情变得更加复杂。看

http://www.techrepublic.com/blog/the-enterprise-cloud/generate-dynamic-sql-statements-in-sql-server/例如。

于 2013-09-08T03:31:00.057 回答