2010-10-07 2 views
0

je donne les résultats suivants CTE SQLnuméro de chaîne dans concaténation CTE SQL

WITH Tasks AS (
    SELECT  TaskID, ParentTaskID, CAST(SortKey AS nChar) AS sort_key 
       /*,cast(SortKey as char) as sort_key */ 
     FROM  oaTasks AS s 
     WHERE (TaskID = 1) 
     UNION ALL 
     SELECT s2.TaskID, s2.ParentTaskID 
       ,Cast('0.'+ cast(Tasks_2.sort_key as NCHAR) 
       + '0.' + cast(s2.SortKey as NCHAR) as NCHAR) AS sort_key 
       /*,cast(Tasks_2.sort_key +'.'+ cast(s2.SortKey as char) as char)*/ 
     FROM  oaTasks AS s2 
     INNER JOIN Tasks AS Tasks_2 
     ON Tasks_2.TaskID = s2.ParentTaskID 
) 
SELECT Tasks_1.TaskID, oaTasks.Task, oaTasks.ParentTaskID 
     , oaTasks.SortKey,Tasks_1.sort_key 
    FROM Tasks AS Tasks_1 
    INNER JOIN oaTasks ON Tasks_1.TaskID = oaTasks.TaskID 

Dans la colonne sort_key je ne reçois pas le format désiré qui devrait être comme 01, 01.01, 01.01.01 etc. mais je suis en train de 1, 0.1, 0.1.1. Toute suggestion?

Répondre

1

essayer droite comme sélectionnez DROIT ('00', 1,2) donne 01

+0

i changé CAST (SortKey AS nChar) à droite ('0'., SortKey) et Cast ('0'. + cast (Tasks_2.sort_key comme NCHAR) + '0.' + cast (s2.SortKey comme NCHAR) comme NCHAR) AS sort_key à droite ('0.', Tasks_2.sort_key) + right ('0.', s2. SortKey) AS sort_key mais j'obtiens une erreur "Les types ne correspondent pas entre l'ancre et la partie récursive dans la colonne" sort_key "de la requête récursive" Tâches " " – Tassadaque

+0

prend 3 paramètres comme ist est le texte en annexe, 2ème est la valeur réelle et 3 est la longueur totale. right ('0.', SortKey) manquant 3ème. essayez de modifier votre requête en conséquence – Harendra

+0

right ('0.', SortKey, 2) donne l'erreur suivante "La bonne fonction nécessite 2 argument (s)." – Tassadaque