Как я могу объединить два разных CTE - PullRequest
0 голосов
/ 16 июня 2011

Для простоты у меня есть следующий пример:

;WITH myCTE (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
)
SELECT CompanyName FROM Customers WHERE CustomerID = 'ALFKI'

union all --this does not work with two With statements

;WITH myCTE2 (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
)
SELECT CompanyName FROM Customers WHERE CustomerID = 'BBICT' 

Ответы [ 2 ]

2 голосов
/ 16 июня 2011
;WITH myCTE (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
), myCTE2 (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
)
SELECT Co FROM myCTE WHERE CustID = 'BBICT' 
union all
SELECT Co FROM myCTE2 WHERE CustID = 'ALFKI'

Edit:

Предполагается, что OP выбрал плохой пример.

В противном случае все, что нужно, это

SELECT CompanyName FROM Customers WHERE CustomerID IN ('ALFKI', 'BBICT' )
0 голосов
/ 16 июня 2011

Вы просто должны разделить два запроса:

;WITH myCTE (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
)
,
myCTE2 (CustID, Co) AS
(
SELECT CustomerID, CompanyName FROM Customers
)
SELECT CompanyName FROM Customers WHERE CustomerID = 'BBICT'
UNION
SELECT CompanyName FROM Customers WHERE CustomerID = 'ALFKI'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...