i have a table with a list of items and qty to be sold by a certain due date. I am trying to calculate a running total column that would show how many items would have been sold at a certain. below is my attempt to get the running totals but it doesn't work as I expect.
select item, due_date, qty, sum(qty) over (Order by item )
from apsplan
Where item ='19-3102875'
order by item
I get the error:
Msg 102, Level 15, State 1, Line 44 Incorrect syntax near 'order'.
ps I am using SQL Server 2012.
Here is the alternative suggestion I received from here
SELECT
item,
due_date,
qty,
(SELECT SUM(t2.qty) FROM apsplan t2 WHERE t2.item <= t1.item and item = '196-31020-005') AS rolling_qty
FROM apsplan t1
WHERE
item = '196-31020-005'
ORDER BY
item
here is the result - not the running total but the over
item due_date qty rolling_qty
196-31020-005 2017-09-20 00:59:00.000 1.00000000 24.00000000
196-31020-005 2017-10-06 01:00:00.000 1.00000000 24.00000000
196-31020-005 2017-11-06 01:00:00.000 1.00000000 24.00000000
196-31020-005 2017-12-06 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-01-28 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-02-04 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-03-25 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-03-25 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-04-01 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-04-08 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-04-29 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-05-06 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-05-13 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-05-27 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-06-03 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-06-10 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-07-01 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-07-08 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-07-15 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-07-29 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-08-05 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-08-12 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-08-26 01:00:00.000 1.00000000 24.00000000
196-31020-005 2019-09-02 01:00:00.000 1.00000000 24.00000000
This is too long for a comment.
Even though you are using SQL Server 2012, the actual functionality depends on the compatibility level. You can query for the compatibility level using:
This should be at least 110 for you to use the
order by
withsum()
. To change the compatibility, refer to the documentation. If you have an older compatibility (perhaps less than 100 is needed), then you can get this error.