2012-10-31 35 views
9

Tôi có ngân sách bán hàng cho mỗi ngày giao dịch trong tháng. Vì vậy, đối ngày 1 ngân sách là 300, cho ngày 2 ngân sách là 400, và sau đó tháng cho ngân sách ngày là 700. Tôi nhận được lỗi này trong truy vấn của tôi: Incorrect syntax near 'ROWS'.Lỗi "cú pháp sai" bằng cách sử dụng OVER()

select 
TradingDate 
,Budget 
,sum(Budget) over (PARTITION BY TradingDate 
order by TradingDate asc 
ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING),1) AS BudgetMTD 
from #4 
+10

Đó là năm 2012 cú pháp. Có thể bạn đang sử dụng phiên bản cũ hơn. (Mặc dù bạn có một ', 1) chưa từng có' trong đó là tốt. –

+0

Có Tôi đang sử dụng năm 2008, cảm ơn sẽ điều tra – Wilest

+0

Cho năm 2008, hãy xem http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sqlserver –

Trả lời

2

truy vấn của bạn đang tiến hành tổng của mỗi số tiền của ngày, với số tiền tiếp theo trong cùng một ngày (phân vùng và thứ tự của bạn bằng trên cùng một trường). Điều này được cho phép, nhưng nó có nghĩa là một trong ba điều sau:

  1. TradingDate là ngày, có nhiều giá trị vào mỗi ngày. Nếu vậy, tổng số là không xác định, vì bạn không biết cái nào sẽ theo sau.
  2. TradingDate ít được đặt tên và đây thực sự là một ngày tháng. Trong trường hợp này, bạn sẽ nhận được giá trị ngày tháng tiếp theo, vào cùng một ngày.
  3. Truy vấn của bạn không đúng định dạng và bạn không thực sự có nghĩa là "phân vùng theo lệnh Giao dịch bằng TradingDate".

Tôi sẽ suy đoán rằng bạn muốn một trong hai điều. Việc đầu tiên sẽ là tổng ngân sách của một ngày với ngày hôm sau. Người kia sẽ là tổng tích luỹ.

Có khả năng bạn có nhiều hàng mỗi ngày và bạn muốn tổng ngân sách vào ngày đó. Nếu đó là trường hợp, sau đó bạn có thể sử dụng công thức đơn giản:

select TradingDate, Budget, 
     sum(Budget) over (PARTITION BY TradingDate) AS BudgetMTD 
from #4 
2

Ok tôi đã đưa ra một giải pháp subquery:

select TradingDate, Budget, 
RunningTotal = (select sum(Budget) from #4 s2 
where s2.TradingDate<= s1.TradingDate) 
from #4 s1 
order by s1.TradingDate 
Các vấn đề liên quan