Я не вижу здесь никакой разницы между этим и вашим вопросом ...
Как преобразовать строки данных в одну строку с разными столбцами в SQL Server
Ответ, который я дал вам, уже принимает последние значения перед выполнением pivot, если это новое требование, вам, вероятно, просто нужно адаптировать разделы к нему ...
В любом случае, если это невозможно и предполагается, что вы используете SQL Server 2014 для этого требования, вы можете использовать LAST_VALUE поверх текущего подхода
WITH YourPivot AS (
<Put your current pivot code here>
)
SELECT DISTINCT
NameID
,LAST_VALUE(Value1) OVER (PARTITION BY NameID ORDER BY CASE WHEN Value1 IS NOT NULL THEN 1 ELSE 0 END, [Time] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Value1
,LAST_VALUE(Value2) OVER (PARTITION BY NameID ORDER BY CASE WHEN Value2 IS NOT NULL THEN 1 ELSE 0 END, [Time] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Value2
,LAST_VALUE(Value3) OVER (PARTITION BY NameID ORDER BY CASE WHEN Value3 IS NOT NULL THEN 1 ELSE 0 END, [Time] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Value3
,LAST_VALUE(Value4) OVER (PARTITION BY NameID ORDER BY CASE WHEN Value4 IS NOT NULL THEN 1 ELSE 0 END, [Time] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Value4
,LAST_VALUE(Value5) OVER (PARTITION BY NameID ORDER BY CASE WHEN Value5 IS NOT NULL THEN 1 ELSE 0 END, [Time] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Value5
FROM YourPivot