我们如何在sql server中的子查询中使用CTE?
喜欢..
选择 ID (我想在这里使用CTE), 名称 来自table_name
答案 0 :(得分:41)
只需在顶部定义CTE并在子查询中访问它?
WITH YourCTE(blubb) AS
(
SELECT 'Blubb'
)
SELECT id,
(SELECT blubb FROM YourCTE),
name
FROM table_name
答案 1 :(得分:13)
不起作用:
select id (I want to use CTE here), name from table_name
在子查询中无法使用CTE。
您可以将其视为一种解决方法:
CREATE VIEW MyCTEView AS ..here comes your CTE-Statement.
然后你就可以这样做:
select id (select id from MyCTEView), name from table_name
答案 2 :(得分:0)
使用CTE /具有所有CTE的UNION集的多个CTE创建视图
CREATE VIEW [dbo].[_vEmployees]
AS
WITH
TEST_CTE(EmployeeID, FirstName, LastName, City, Country)
AS (
SELECT EmployeeID, FirstName, LastName, City, Country FROM Employees WHERE EmployeeID = 4
),
TEST_CTE2
AS (
SELECT EmployeeID, FirstName, LastName, City, Country FROM Employees WHERE EmployeeID = 7
)
SELECT EmployeeID, FirstName, LastName, City, Country FROM TEST_CTE UNION SELECT * FROM TEST_CTE2
GO
现在,将其用于子查询
SELECT * FROM Employees WHERE EmployeeID IN (SELECT EmployeeID FROM _vEmployees)