SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

Ventes exceptionnelles quotidiennes SQL, Rolling Aggregate ?

Vous pouvez utiliser une agrégation conditionnelle et une somme cumulée :

select date,
       sum(sum(case when outcome = 'New' then 1
                    when outcome  'Complete' then -1
                    else 0
               end)
           ) over (order by date) as VolumeOutstanding
from t
group by date
order by date;

Cela suppose que chaque saleId a au plus un enregistrement "nouveau" et un enregistrement "complet", ce qui est logique et vrai dans vos exemples de données.