Infatti, non funziona se ho un codice in più : azz;
Sto lavorando a questa e sembra andare(ho tolto infatti le funzioni LEAD...e così ripeto sembra andare...speriamo bene
;with target(row#,call_id,num_progressivo,codice
)
as(
Ma con una stored come potevo fare?
select
row_number()over(order by call_id,num_progressivo)
,call_id
,num_progressivo
,codice
from dbo.test as A
),
cte (row#,call_id,num_progressivo,codice,valore_calcolato)
as(
--Q_INIZIALE
select top(1)
row#
,call_id
,num_progressivo
,codice
,codice
from target
where row#=1
union all
--Q_RICORSIVA
select
A.row#
,A.call_id
,A.num_progressivo
,A.codice
,case
when exists(select * from target as B where B.codice=A.codice and (B.call_id<A.call_id or (B.call_id=A.call_id and B.num_progressivo<A.num_progressivo)))
then B.valore_calcolato
else A.codice
end
from target as A
join cte as B on A.row#-1=B.row#
-- where row#>1
)
select *
from cte
order by row#