TSQL If Statement

时间:2013-09-08 03:29:06

标签: sql sql-server tsql

我有一个脚本,我允许用户生成报告。他们选择选项,其中一个下降是位置。它包含一个地方列表,第一个选项是“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子句中的那个?

1 个答案:

答案 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/示例。