动态查询以根据条件选择列

时间:2018-09-27 14:09:20

标签: sql sql-server database dynamicquery dynamic-queries

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

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

2 个答案:

答案 0 :(得分:2)

您可以从这里开始:

-- 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'

答案 1 :(得分:0)

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

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

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

请接受。