2

是否可以根据动态查询的条件选择列。如果条件为假,则不应选择该列。我想在下面写一个动态查询。

DECLARE @param varchar(10),
SELECT A, 
IF (@param = 'U')
B = A-2, '
From Table tb
4

2 回答 2

4

你可以从这个开始:

-- Declarations
DECLARE 
    @param varchar(10),
    @stm nvarchar(max),
    @err int

-- Parameter value
SET @param = 'U' -- or another value

-- Statement
SET @stm = N'SELECT ColumnA'
IF (@param = 'U') SET @stm = @stm + N', ColumnB'
SET @stm = @stm + N' FROM YourTable'

-- Execution
EXEC @err = sp_executesql @stm
IF @err = 0 PRINT 'OK'
ELSE PRINT 'Error'
于 2018-09-27T14:46:06.523 回答
0

我们可以根据条件获取列。为此,我们需要 CASE。

在这里,我添加了一个示例代码,

SELECT
    CASE WHEN @param=1 THEN UserFullName ELSE firstName END as userName
FROM users

请收下。

于 2018-09-27T14:26:49.977 回答