我每个月的每个交易日都有一个销售预算。因此,对于第1天,预算为300,对于第2天,预算为400,然后每月预算为700。在查询中出现此错误:Incorrect syntax near 'ROWS'.

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

最佳答案

您的查询取的是每天金额的总和,同一天的下一个金额(您的分区和排序依据在同一字段中)。这是允许的,但这意味着三件事之一:

  • TradingDate是一个日期,每个日期带有多个值。如果是这样,总和是不确定的,因为您不知道会跟随哪一个。
  • TradingDate的名称不正确,它实际上是日期时间。在这种情况下,您将获得同一日期的下一个日期时间值。
  • 您的查询格式错误,并且您的意思不是“按TradingDate划分按TradingDate的订单”。

  • 我推测您想要两件事之一。第一个是一天的预算与第二天的预算之和。另一个将是累计金额。

    有可能您每天有多行,并且希望当天的预算总和。如果是这样,那么您可以使用更简单的公式:
    select TradingDate, Budget,
           sum(Budget) over (PARTITION BY TradingDate) AS BudgetMTD
    from #4
    

    09-20 09:50