2010-12-10 5 views

Antwort

8

behandeln Sie ein CTE als Unterabfrage, wo es eher wie eine Tabelle verwendet werden sollte.

versuchen, diese

;with cte as 
(
select rowid from batchinfo where datapath like '%thc%' 
) 
select * from qvalues 
INNER JOIN cte on cte.rowid=qvalues.rowid 
+0

I glaube nicht, dass du die Wörter "mehr wie" in "... mehr wie eine Tabelle" brauchst, da sie nur als Tabellen verwendet werden können :) +1, um das Semikolon am Anfang der Anweisung zu platzieren, um Fehler beim CTE zu vermeiden in größeren Aussagen verwendet. – Tony

1

Wie erwähnt beiläufig in Al W Antwort (und Kommentar Tony). Die Tatsache, dass der Fehler in Zeile 6 beschrieben wird, bedeutet, dass es sich nicht um die erste Anweisung im Stapel handelt. Was bedeutet, dass Sie ein Semikolon vor dem WITH Schlüsselwort haben müssen:

When a CTE is used in a statement that is part of a batch, the statement before it must be followed by a semicolon.

Auch aus Transact-SQL Syntax conventions.

Although the semicolon is not required for most statements in this version of SQL Server, it will be required in a future version.

So lohnt es sich, in die Gewohnheit, immer in die Semikolons des Setzens