2017-09-18 3 views
0

나는 특정 기한까지 판매 될 항목 및 수량 목록이있는 테이블을 가지고 있습니다. 특정 수량으로 판매 된 품목의 수를 나타내는 누적 합계 열을 계산하려고합니다. 아래는 합계를 얻으려는 시도이지만 예상대로 작동하지 않습니다. 여기SQL running totalals

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 

여기에서받은 다른 제안은이다 나는 여기에 SQL 서버 2012

을 사용하고

Msg 102, Level 15, State 1, Line 44 Incorrect syntax near 'order'.

PS :

select item, due_date, qty, sum(qty) over (Order by item) 
from apsplan 
Where item ='19-3102875' 
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 
+0

질문의 쿼리가 정상적으로 보입니다. 구문 오류가 표시되지 않습니다. 실행할 실제 쿼리 또는 일부 축소 버전을 표시하고 있습니까? –

+0

나는 블라디미르에 동의하며 잘 실행된다. 그것이 44 행이라고 말하기 때문에, 나는 이것이 더 큰 질의의 일부이고 다른 곳에 문제가 있다고 의심한다. – SEarle1986

+0

@ SEarle1986 그것이 그대로 코드이다. 내가 위에있는 유일한 것은 내가 여기 오기 전에 나는 주변에서 놀고있는 동일한 쿼리의 변형이다. 나는이 모든 행성이 실행될 유일한 행이 내가 여기에 올린 행렬이라는 것을 주석 처리했다. – user2355773

답변

0

댓글이 너무 깁니다.

SQL Server 2012를 사용하는 경우에도 실제 기능은 호환성 수준에 따라 다릅니다. 다음을 사용하여 호환성 수준에 대한 조회 할 수 있습니다

SELECT name, compatibility_level FROM sys.databases 

당신이 sum()으로 order by를 사용하는이 적어도 110이어야한다. 호환성을 변경하려면 documentation을 참조하십시오. 이전 버전과의 호환성이있는 경우 (아마도 100 미만이 필요함)이 오류가 발생할 수 있습니다.

+1

사실, 사실이 아닙니다. 적어도, SQL Server 2014 Express. 'SUM (...) OVER (ORDER BY ...)'는 테스트에서 사용자 데이터베이스의 호환성 레벨 100으로 작업했습니다. –