0

重複の可能性:
一度使用した CTE にアクセスできないのはなぜですか?

WITH を使用して複数の結果を取得するにはどうすればよいですか?

;WITH X AS
    (SELECT whatever)

, Y AS
    (SELECT whatever FROM X)

SELECT * FROM Y WHERE condition

SELECT Count(*) FROM X                <==== X doesn't work here

@@RecordCountは必要ありません。これはXではなくYをカウントします

4

1 に答える 1

0

CTE の一部であるステートメントが完了した後は、CTE にアクセスできません。

ただし、最初の結果セットに含めることができます。

SELECT Y.*, (SELECT COUNT(*) FROM X) as X_Count
FROM Y
WHERE condition

ただし、結果の各行にその値が含まれます。

おそらく、X を CTE ではなくテーブル変数にしたほうがよいでしょう。

于 2012-10-30T22:49:58.710 に答える