2016-02-02 3 views
1

Я знаю, что для этого есть много решений, но, к сожалению, я не могу использовать раздел или ключевое слово TOP. Ничего, что я пытался на более ранних сообщениях, работает.Как получить последнее не пустое значение из предыдущих строк

Моя таблица выглядит следующим образом: enter image description here

Результат я хочу, когда какой-либо процент выполнения является NULL он должен получить значение из последней процент завершения без значения, как это:

enter image description here

ответ

2

Это легко делается с помощью outer apply:

select t.projectname, t.sequence, 
     coalesce(t.completion_percentage, t2.completion_percentage) as completion_percentage 
from t outer apply 
    (select top 1 t2.* 
     from t t2 
     where t2.projectname = t.projectname and 
      t2.completion_percentage is null and 
      t2.sequence < t.sequence 
     order by t2.sequence desc 
    ) t2; 
0

вы можете попробовать следующее:

SELECT t2.project_name,t2.sequence, 
case when percentage is null then (select percentage from table1 t1 where t1.sequence=t2.sequence-1) 
else t2.percentage end as percentage 
FROM table t2 
Смежные вопросы