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
)
EXEC(@QUERY1)

エラーが発生します

ORDER BY句は、TOPまたはFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、および一般的なテーブル式では無効です。

なぜこのエラーが発生するのですか?そして私はSQLクエリを上記の形式で正確に書く必要があります。クエリを変数に割り当ててから実行するように

4

3 に答える 3

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)
于 2012-08-06T07:02:59.627 に答える
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)
于 2012-08-06T07:03:43.000 に答える
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)

(文字列内の引用符を二重にしたことに注意してください)

于 2012-08-06T07:04:46.160 に答える