我正在研究T-SQL集运算符和Window函数。我正在观看有关Microsoft Virtual Academy的视频讲座,但是遇到无法解决的语法错误。
我有一个虚拟的Transactions
表:
CREATE TABLE [dbo].[Transactions]
(
[TransactionID] [int] IDENTITY(1,1) NOT NULL,
[AccountID] [int] NOT NULL,
[Amount] [money] NOT NULL,
[TransactionDate] [datetime] NOT NULL
)
我填充了一些随机数据:
INSERT [dbo].[Transactions] ([AccountID], [Amount], [TransactionDate])
VALUES (1, 20.5000, '2018-07-03'), (1, 19.9900, '2018-07-03'),
(2, 65.3000, '2018-07-03'), (2, 99.0000, '2018-07-04'),
(1, 13.3000, '2018-07-04'), (1, 12.9900, '2018-07-04'),
(2, 37.2500, '2018-07-04'), (1, 50.0000, '2018-07-05'),
(1, 17.3500, '2018-07-05'), (2, 24.9000, '2018-07-05'),
(1, 11.2500, '2018-07-05'), (2, 39.9000, '2018-07-05')
我现在要(在讲座之后)显示所有列以及附加的列CurrentBalance
,显示将金额添加到以前的金额之后的余额,如下所示:
TransactionID AccountID Amount TransactionDate Balance
------------- ----------- --------------------- ----------------------- -----------
1 1 20,50 2018-07-03 00:00:00.000 20,50
2 1 19,99 2018-07-03 00:00:00.000 40,49
5 1 13,30 2018-07-04 00:00:00.000 53,79
6 1 12,99 2018-07-04 00:00:00.000 66,78
.
.
.
根据MSDN上的讲座和文档,应该执行以下查询
SELECT
*,
SUM(Amount) OVER(PARTITION BY AccountID ORDER BY TransactionID, AccountID) AS Balance
FROM
Transactions
ORDER BY
TransactionID, AccountID
但我看到此错误消息:
Messaggio 102,livello 15,stato 1和riga 6
'order'附近的语法不正确。
至于评论,这不是我得到错误的代码,这是屏幕截图
我正在远程SQL Server 2008 R2上使用SSMS v17.6。
谢谢, 戴维德。