Try this out:-DECLARE @MaxRec int,@Cnt int,@Sql varchar(8000)SELECT @MaxRec=MAX(RecCount),@Cnt=1FROM (SELECT COUNT(*) AS RecCount YourTable GROUP BY Log_ID)tWHILE @Cnt<=@MaxRecBEGINSET @Sql=COALESCE(@sql,'')+',MAX(CASE WHEN Seq= '+ @Cnt + ' THEN St_Dt ELSE NULL END) AS St_Dt'+ @Cnt + ',MAX(CASE WHEN Seq= '+ @Cnt + ' THEN End_Dt ELSE NULL END) AS End_Dt' + @CntSET @Cnt=@Cnt+1ENDSET @Sql='SELECT Log_ID,Total_Time'+ @Sql + ' FROM (SELECT Log_ID,St_Dt,End_Dt,Total_Time,(SELECT COUNT(*) FROM YourTable WHERE Log_ID=t.Log_ID AND St_Dt<=t.St_Dt) AS SeqFROM YourTable t)r'EXEC (@Sql)