当我尝试运行以下查询时
DECLARE @QUERY1 VARCHAR(MAX)
SET @QUERY1=(SELECT [ResponsibleEngineerID],[ResponsibleEngineer],DocType
FROM tblResponsibleEngineer
WHERE ResponsibleEngineer NOT IN ('(Select a Responsible Engineer...)')
ORDER BY [ResponsibleEngineer] ASC
)
EXEC(@QUERY1)
我收到错误
ORDER BY子句在视图,内联函数中派生无效 表,子查询和公用表表达式,除非TOP或FOR 还指定了XML。
为什么会出现此错误?我需要完全按照上面的格式编写sql查询。比如将查询分配给变量然后执行
答案 0 :(得分:0)
试试这个:
DECLARE @QUERY1 VARCHAR(MAX)
SET @QUERY1='SELECT [ResponsibleEngineerID],[ResponsibleEngineer],DocType
FROM tblResponsibleEngineer
WHERE REPLACE(Responsible Engineer,'''','''''') NOT IN (Select a REPLACE(Responsible Engineer,'''','''''')...)
ORDER BY [ResponsibleEngineer] ASC'
EXEC(@QUERY1)
答案 1 :(得分:0)
您将查询的结果分配给@ QUERY1,而不是实际的查询文本。
据我所知,这就是你想要的;
DECLARE @QUERY1 VARCHAR(MAX)
SET @QUERY1='SELECT [ResponsibleEngineerID],[ResponsibleEngineer],DocType
FROM tblResponsibleEngineer
WHERE ResponsibleEngineer NOT IN (Select a Responsible Engineer...)
ORDER BY [ResponsibleEngineer] ASC'
EXEC(@QUERY1)
答案 2 :(得分:0)
您没有将查询分配给变量然后执行它 - 您正在执行查询并尝试将该查询的结果分配给变量。
如果您的查询未包含子查询的非法表达式,则您收到有关返回多列的子查询的错误。
声明变量:
DECLARE @QUERY1 VARCHAR(MAX)
将查询结果分配给变量:
SET @QUERY1=(SELECT [ResponsibleEngineerID],[ResponsibleEngineer],DocType
FROM tblResponsibleEngineer
WHERE ResponsibleEngineer NOT IN ('(Select a Responsible Engineer...)')
ORDER BY [ResponsibleEngineer] ASC
)
你可能打算做什么:
DECLARE @QUERY1 VARCHAR(MAX)
SET @QUERY1='SELECT [ResponsibleEngineerID],[ResponsibleEngineer],DocType
FROM tblResponsibleEngineer
WHERE ResponsibleEngineer NOT IN (''(Select a Responsible Engineer...)'')
ORDER BY [ResponsibleEngineer] ASC'
EXEC(@QUERY1)
(请注意,我现在将字符串中的引号加倍)