我在下面创建的查询,它在sql server 2012中工作良好,但在sql server 2008或2008R2中不起作用。请帮我解决这个问题。查询在sql server 2012中可用,但在服务器2008中不可用
Select Batchno, BatchId, Transactiontype, LoanAccountNumber, TransactionId
, StaticDetailId, Name, Comment, BatchTotal
, case when Amount<0 then Amount*-1
Else Amount End as Amount
, ((BatchTotal) - (SUM(case when Amount<0 then Amount*-1 Else Amount End)
OVER(order BY Batchno ROWS BETWEEN 1000 Preceding and current row))) AS BatchBal
From (SELECT row_number() over (order by BO.BatchID) as [BatchNo]
, BO.BatchID, sd.TransactionType, tra.LoanAccountNumber, tra.TransactionID
, tra.StaticDetailID,tra.Name,tra.Comment, BO.BatchTotal,tra.Amount
FROM BackOfficeBatchTransactionDetails tra
join BackOfficeBatchDetails BO
on BO.BatchID=tra.BatchID and tra.isactive=1 and tra.isdeleted=0
join StaticDetails sd on sd.StaticDetailID=tra.StaticDetailID and sd.isactive=1
where BO.isactive=1 and BO.isdeleted=0 AND [email protected]
) AS G
的代码在这种格式下是相当难读的,但是我把这笔钱放在这个原因上:'1000之前的行和当前行之间的行'。如果我不是mi这个语法最近才在SQ Server中引入。 – SchmitzIT 2014-09-18 19:17:15
是的这种语法是在sql server 2012中,这是它在2008年不工作的原因。请建议,以便它也可以在2008年。 – 2014-09-18 19:18:34