2009-12-16 70 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