25

Wie können wir CTE in Unterabfrage in SQL Server verwenden?Wie können wir CTE in Unterabfrage in SQL-Server verwenden?

wie ..

wählen id (ich will hier CTE verwenden), Name von table_name

+7

Seufz. Warum nicht noch mehr Kontext geben? Zum Beispiel .... was versuchst du zu erreichen? Warum denkst du, dass du hier einen CTE nutzen willst? Was hast du schon versucht? Warum hat es nicht funktioniert? usw. –

Antwort

37

einfach Ihre CTE definieren auf und greifen Sie in der Unterabfrage?

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

Dies kann die korrelierte Unterabfrage nicht verringern. – Vadzim

11

Es funktioniert nicht: in Unterabfragen

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

Es ist nicht möglich, CTE zu verwenden.

Sie können es als ein Werk realisieren um:

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

Dann können Sie dies tun:

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

Ein bisschen spät, aber für alle, die diese suchen, eine weitere Option zu schaffen Eine Funktion, die den CTE enthält, und Sie können diese Funktion dann in Ihrer fields-Klausel verwenden.

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