通常はSQL Server
Common Table Expression句は、次のように、ステートメントの前にセミコロンがあります。
;WITH OrderedOrders AS --semicolon here
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60
どうして?
..FROM..WITH (NOLOCK)..
RESTORE..WITH MOVE..
;
で終了することはオプションですまとめると、前のステートメントはWITH/CTEの前に終了する必要があります。エラーを回避するために、CTEの前に何があるかわからないため、ほとんどの人は;WITH
を使用します
そう
DECLARE @foo int;
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
と同じです
DECLARE @foo int
;WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
MERGEコマンドにも同様の要件があります。