2009-12-16 72 views
25

我们如何在sql server的子查询中使用CTE?我们如何在sql server的子查询中使用CTE?

如..

选择 ID (我想在这里使用CTE),从表名

+7

叹息。为什么不提供更多的上下文?例如....你想达到什么目的?你为什么认为你想在这里使用CTE?你已经尝试了什么?为什么它不工作?等 – 2009-12-16 11:42:32

回答

37

只要定义顶部和访问它的子查询您的CTE 名 ?

WITH YourCTE(blubb) AS 
(
    SELECT 'Blubb' 
) 
SELECT id, 
     (SELECT blubb FROM YourCTE), 
     name 
FROM table_name 
+7

这不能减轻相关的子查询。 – Vadzim 2014-10-07 11:16:27

11

它不工作:

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 
0

有点迟,但任何人搜索这个,另一个选择是创建一个包含CTE的函数,然后你可以在你的fields子句中使用该函数。

create function dbo.myCTEFunction(@ID int) returns varchar(100) as 
begin 
    declare @Result varchar(100) 
    -- fill the variable with your CTE here... 
    return @Result 
end; 


select t.id, 
     (select dbo.myCTEFunction(t.id)), 
     t.name 
from table_name t