Steg:
- Skapa ett radnummer,
rn
, över alla rader i falletid
är inte i sekvens. - Skapa ett radnummer,
approv_rn
, partitionerad avEmailApproved
så vi vet närEmailApproved = 1
för andra gången - Använd en
outer apply
för att hitta radnumret försecond
instans avEmailApproved = 1
- I
where
klausul filtrera bort alla rader där radnumret är>=
värdet i steg 3. - Om det finns 1 eller 0
EmailApproved
poster tillgängliga sedan denouter apply
returnerar null, i så fall returnerar alla tillgängliga rader.
with test as
(
select *,
rn = row_number() over (order by Created desc),
approv_rn = row_number() over (partition by EmailApproved
order by Created desc)
from @Test
)
select *
from test t
outer apply
(
select x.rn
from test x
where x.EmailApproved = 1
and x.approv_rn = 2
) x
where t.rn < x.rn or x.rn is null
order by t.Created desc;