2017-12-27 2 views

Antwort

-1

some_logical_grouping_of_data sollte eine Gruppe von Daten definieren, die für verwendet werden können.

Select ID, stepname, arrival_date, duedate, 
LEAD (arrival_date) OVER (partition by "some_logical_grouping_of_data" order by ID) as completion_date 
from table; 
0

Dieses Script gibt Ihr erwartetes Ergebnis

;With Cte(
id,StepName,ArrivalDate,duedate 
) 
AS 
(
SELECT 1,'Step1','25/12/2017','1/1/2018' UNION ALL 
SELECT 2,'Step2','26/12/2017','1/1/2018' UNION ALL 
SELECT 3,'Step3','27/12/2017','1/1/2018' 
) 
SELECT 
    id 
    ,StepName 
    ,ArrivalDate 
    ,duedate 
    ,ISNULL(LEAD(ArrivalDate,1)OVER(ORDER BY ArrivalDate),'') AS CompletionDate 
FROM CTE 

Ergebnis

id StepName ArrivalDate duedate CompletionDate 
----------------------------------------------------- 
1 Step1  25/12/2017 1/1/2018 26/12/2017 
2 Step2  26/12/2017 1/1/2018 27/12/2017 
3 Step3  27/12/2017 1/1/2018  
0

Dies sollte Ihr Ziel, Abschlussdatum als Startdatum ab dem nächsten id

SELECT x.id 
    ,x.stepname 
    ,x.arrival_date 
    ,x.due_date 
    ,isnull(y.arrival_date, '') Completion_date 
FROM x 
LEFT JOIN (
    SELECT id 
     ,step1 
     ,step2 
     ,arrival_date 
    FROM x 
    ) y ON x.id = y.id + 1 
0

a dienen Geben Reihe n Umbra basierend auf aufsteigender Reihenfolge von id Spalte. (Wenn id Spalte Lücken hat). Dann verwenden Sie einen LEFT JOIN/RIGHT JOIN mit rn = rn + 1.

Abfrage

;with cte as(
    select [rn] = row_number() over(
     order by [id] 
    ), * 
    from [your_table_name] 
) 
select t1.[stepName], t1.[ArrivalDate], t1.[dueDate], 
coalesce(t2.[dueDate], '') as [completiondate] 
from cte t1 
left join cte t2 
on t1.[rn] + 1 = t2.[rn]; 
-1

Es ist eine schlechte Idee, Daten zu verbinden, basierend auf String-Suffixe. Ich nehme an, dass step1 immer ID 1 hat, hat step13 immer ID 13 und so weiter. Dann können Sie etwas tun wie

SELECT t1.ID, t1.Stepname, t1.arrival_date, t2.arrival_date as completion_date 
    FROM tablename t1 
    LEFT JOIN tablename t2 on t1.ID + 1 = t2.ID; 
+0

Warum der Downvote? –

Verwandte Themen