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,这算Y,而不是X

4

1 回答 1

0

在它所属的语句完成后,您将无法访问 CTE。

不过,您可以将其包含在您的第一个结果集中:

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

但是,这将在结果的每一行中包含该值。

将 X 设为表变量而不是 CTE 可能会更好。

于 2012-10-30T22:49:58.710 回答