2009-12-16 35 views
25

Làm thế nào chúng ta có thể sử dụng CTE trong truy vấn phụ trong máy chủ sql?Làm thế nào chúng ta có thể sử dụng CTE trong truy vấn phụ trong máy chủ sql?

như ..

chọn id (i muốn sử dụng CTE ở đây), tên từ tên_bảng

+7

Sigh. Tại sao không cung cấp thêm một số ngữ cảnh? Ví dụ .... bạn đang cố gắng đạt được điều gì? Tại sao bạn nghĩ rằng bạn muốn sử dụng một CTE ở đây? Bạn đã thử cái gì? Tại sao nó không hoạt động? vv –

Trả lời

37

Chỉ cần xác định CTE của bạn trên đầu và truy cập nó trong subquery?

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

Điều này không thể giảm thiểu truy vấn con tương quan. – Vadzim

11

Nó không làm việc:

select id (I want to use CTE here), name from table_name 

Nó không thể sử dụng CTE trong các truy vấn phụ.

Bạn có thể nhận ra nó như là một công trình xung quanh:

CREATE VIEW MyCTEView AS ..here comes your CTE-Statement. 

Sau đó, bạn có thể làm điều này:

select id (select id from MyCTEView), name from table_name 
0

Một hơi muộn nhưng đối với bất cứ ai tìm kiếm này, tùy chọn khác là để tạo ra một hàm có chứa CTE và sau đó bạn có thể sử dụng hàm đó trong mệnh đề trường của bạn.

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 
Các vấn đề liên quan