2

ich eine CTE-Abfrage geschrieben haben und ich die Abfrage in Microsoft SQL Server 2008 R2 Management Studio ausführen:Fehler beim Parsen in in CTE Abfrage SQL Server

WITH DependencyHierarchy(processName, dependProcessName) AS 
(
    SELECT 
     processName, 
     dependProcessName, 
     1 as HierarchyLevel 
    FROM processDependency 

    UNION ALL 

    SELECT 
     e.processName, 
     e.dependProcessName, 
     eh.HierarchyLevel + 1 AS HierarchyLevel 
    FROM 
     processDependency e 
    INNER JOIN 
     DependencyHierarchy eh ON e.dependProcessName = eh.processName 
) 
SELECT * 
FROM DependencyHierarchy 
ORDER BY HierarchyLevel, processName, dependProcessName; 
GO 

Es wirft diesen Fehler:

There was an error parsing the query. [ Token line number = 1,Token line offset = 1,Token in error = WITH ]

Die Tabelle hat diese Daten:

processName dependProcessName 
    P1   P2 
    P2   P3 
    P3   P4 
    P4   P5 
    P6   P7 
+1

Haben Sie einen Code über dem CTE? Was passiert, wenn Sie ein '' 'vor' WITH' hinzufügen? –

+0

es funktioniert nicht einmal mit a; vor mit .. –

Antwort

7

WITH common_table_expression :

column_name

Specifies a column name in the common table expression. Duplicate names within a single CTE definition are not allowed. The number of column names specified must match the number of columns in the result set of the CTE_query_definition.

The list of column names is optional only if distinct names for all resulting columns are supplied in the query definition.

In Spalte HierarchyLevel zu cte Spaltenliste:

WITH DependencyHierarchy(processName,dependProcessName, HierarchyLevel) 
AS 
(
    ... 
) 

LiveDemo

oder lassen Sie es leer (Spaltennamen wird von der ersten SELECT abgeleitet werden):

WITH DependencyHierarchy AS 
(
    ... 
) 

LiveDemo2

+0

Es funktioniert nicht mit leeren .. :( –

+0

@DeepakKumar Sind Sie sicher, dass es nicht funktioniert? – lad2025

+0

..ja .. Ich denke, es ist das Problem mit dem Editor .. :(.. Dies sollte funktionieren in Microsoft SQL Server Management Studio richtig? –