【发布时间】:2020-02-19 10:02:17
【问题描述】:
我正在尝试对优先级矩阵进行 SQL 查询。因此,我想动态传递列名,然后还基于也具有动态值的 where 子句进行过滤。
我在 Stackoverflow 上找到了一些有用的答案,但到目前为止他们只得到了我,现在我有点卡住了。谁能看到我哪里出错了?
查询我有问题:
DECLARE @var1 VARCHAR(50)
DECLARE @var2 VARCHAR(50)
DECLARE @sql VARCHAR(255)
SET @var1 = 'partial impact'
SET @var2 = 'single user'
SET @sql = 'select [' + @var1 + '] from [priority matrix] where impact is ['+ @var2 + ']'
EXECUTE(@sql);
不是动态的并且工作正常的查询:
SELECT [partial impact]
FROM priorityMatrix
WHERE impact = 'single user';
我在运行时看到的错误:
消息 102,级别 15,状态 1,第 1 行 “单个用户”附近的语法不正确。
到目前为止有帮助的 Stackoverflow 查询:
SQL Server + Dynamic Query 'Invalid Column Name' How to set variable from a SQL query?
【问题讨论】:
-
您是否尝试过像在非动态查询中那样包含等号?目前,您有一个
is...此外,您从中选择的表名与工作查询中的表名不同。
标签: sql sql-server