Итоги по SQL
У меня есть таблица со списком предметов и кол-во, которые будут проданы к определенной дате. Я пытаюсь вычислить столбец промежуточного итога, который бы показывал, сколько предметов было бы продано за определенный период. ниже моя попытка получить промежуточные итоги, но это не работает, как я ожидаю.
select item, due_date, qty, sum(qty) over (Order by item )
from apsplan
Where item ='19-3102875'
order by item
Я получаю ошибку:
Сообщение 102, Уровень 15, Состояние 1, Строка 44 Неверный синтаксис рядом с 'order'.
PS Я использую SQL Server 2012.
Вот альтернативное предложение, которое я получил отсюда
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
вот результат - не промежуточный итог, а более
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
1 ответ
Это слишком долго для комментария.
Даже если вы используете SQL Server 2012, фактическая функциональность зависит от уровня совместимости. Вы можете запросить уровень совместимости, используя:
SELECT name, compatibility_level FROM sys.databases
Это должно быть не менее 110 для вас, чтобы использовать order by
с sum()
, Чтобы изменить совместимость, обратитесь к документации. Если у вас более старая совместимость (возможно, требуется менее 100), вы можете получить эту ошибку.