Puis-je utiliser plusieurs “avec”?

juste par exemple

With DependencedIncidents AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A CROSS JOIN [Incident] AS X WHERE patindex('%' + A.[Col] + '%', X.[SQL]) > 0 ) AS INC ) With lalala AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A CROSS JOIN [Incident] AS X WHERE patindex('%' + A.[Col] + '%', X.[SQL]) > 0 ) AS INC ) 

ne fonctionne pas “Erreur près de”.

Aussi, je veux utiliser d’abord avec l’intérieur deuxième avec. Est-ce réel ou dois-je utiliser des tables temporaires?

Essayer:

 With DependencedIncidents AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A CROSS JOIN [Incident] AS X WHERE patindex('%' + A.[Col] + '%', X.[SQL]) > 0 ) AS INC ), lalala AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A CROSS JOIN [Incident] AS X WHERE patindex('%' + A.[Col] + '%', X.[SQL]) > 0 ) AS INC ) 

Et oui, vous pouvez référencer une expression de table commune dans la définition d’une expression de table commune. Même récursivement. Ce qui conduit à des astuces très soignées .

Oui, faites-le comme suit:

 WITH DependencedIncidents AS ( .... ), lalala AS ( .... ) 

Vous n’avez pas besoin de répéter le mot clé WITH