Unfortunately, it Sql Server 2008does not support the window function Sum() Over(order by)for calculating the total.
Use Correlated sub-query methodto calculate the total
try it
SELECT ContractNos,
Sale,
SaleDate,
Agent
FROM (SELECT (SELECT Sum([Sale])
FROM yourtable b
WHERE a.[Agent] = b.[Agent]
AND a.[ContractNos] >= b.[ContractNos]) run_sum,*
FROM yourtable a) c
WHERE run_sum - sale < 30
or use Cross Apply
SELECT ContractNos,
Sale,
SaleDate,
Agent
FROM (SELECT *
FROM yourtable a
CROSS apply (SELECT Sum([Sale])
FROM yourtable b
WHERE a.[Agent] = b.[Agent]
AND a.[ContractNos] >= b.[ContractNos]) c(run_sum)) a
WHERE run_sum - sale < 30
For Sql Server 2012+use this
SELECT ContractNos,
Sale,
SaleDate,
Agent
FROM (SELECT Sum([Sale])OVER(partition BY [Agent] ORDER BY [ContractNos]) run_sum,*
FROM yourtable) a
WHERE run_sum - sale < 30
source
share