SQL Server Équivalent d'Oracle 'CONNECT BY prior", et "l'ORDRE des FRÈRES EN'

J'ai cet Oracle code structure je suis en train de convertir vers SQL Server 2008 (Remarque: j'ai utilisé des noms génériques, joint colonne des noms et des noms de table dans des crochets '[]', et fait un peu de mise en forme pour rendre le code plus lisible):

SELECT [col#1], [col#2], [col#3], ..., [col#n], [LEVEL] 
FROM (SELECT [col#1], [col#2], [col#3], ..., [col#n] 
      FROM [TABLE_1] 
      WHERE ... ) 
CONNECT BY PRIOR [col#1] = [col#2] 
START WITH [col#2] IS NULL 
ORDER SIBLINGS BY [col#3]

Qu'est-ce que le Serveur SQL équivalent modèle le code ci-dessus?

Plus précisément, je suis aux prises avec le NIVEAU, et de "l'ORDRE FRÈRES et sœurs PAR' Oracle des constructions.

Remarque:
Ci-dessus "code" est le résultat final à partir d'un ensemble de procédures d'Oracle. Fondamentalement, la clause'where' est construit dynamiquement et change en fonction de différents paramètres passés. Le bloc de code commençant par "CONNECT BY prior' est codé en dur.


Pour Référence:

La Simulation de CONNECTER EN AVANT de l'ORACLE, SQL SERVER article vient de fermer, mais il n'explique pas comment gérer le "NIVEAU" et l '" ORDRE que les FRÈRES et sœurs des constructions. ... Et de mon esprit, c'est arriver dans une torsion!

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

équivaut à:

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

Si j'ai un modèle initial de travailler de la, il ira un long chemin pour m'aider à construire stockée SQL Server envisageable de construire une bonne instruction T-SQL.

De l'aide sera très appréciée.

L'équivalent est une expression de table commune récursive: stackoverflow.com/questions/tagged/sql-server+recursive-query
Ceci est un extrait directement à partir stockée Oracle proc: vSQL := 'SELECT FLEX_VALUE, DESCRIPTION, ADMIN_ENABLED, PARENT_FLEX_VALUE, DISPLAY_DESC, le NIVEAU DE ('|| 'SELECT FLEX_VALUE, DESCRIPTION, ADMIN_ENABLED, PARENT_FLEX_VALUE, '||vDescField||' DISPLAY_DESC '|| 'à PARTIR de GL_SEGMENT'||TO_CHAR(inSEGMENT)||' '|| 'OÙ PERIOD_YEAR = '||inPERIOD_YEAR||' '; ...... Note le "OÙ PERIOD_YEAR' ......
Mais la syntaxe est le moindre de mes soucis. J'ai besoin d'un T-SQL équivalent de l'oracle de la structure.
double possible de Simulation de CONNECTER EN AVANT de l'ORACLE, SQL SERVER
Pour l'enregistrement, j'ai utilisé [..] pour m'aider à identifier entre les noms de colonnes et les mots clés. J'ai également ajouté les sauts de ligne et les tabulations, etc. Je ne suis pas un SQL expert, et le sql brut est pas formaté!

OriginalL'auteur user1058946 | 2015-08-05