【发布时间】:2021-03-17 21:09:53
【问题描述】:
我想从 2 个按日期排序的表中获取数据:以获取客户的累积余额。
我想从中获取数据的 2 个表是我的表:transfers & trans_payments 我使用 SQL 服务器完成了这项工作,这里是查询:
SELECT TOP 1000000
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) num_col,
ID, cust_id, final, value, date,
SUM(balance) OVER (PARTITION BY cust_id
ORDER BY date, seq, ID) balance,
note
FROM
(SELECT
ID, cust_id, final, 0, final balance, date, note, 0
FROM
transfers
UNION ALL
SELECT
ID, cust_id, 0, value, - value, date, note, 1
FROM
trans_payments) t (ID, cust_id, final, value, balance, date, note, seq)
ORDER BY
cust_id, date, seq
但我想将此查询转换为在 SQLite 中使用它,以及我到目前为止所做的:
SELECT ROW_NUMBER() OVER (ORDER BY
(SELECT 1)) num_col, ID, cust_id, final, value, date, sum(balance) OVER
(partition BY cust_id
ORDER BY date, seq, ID) balance, note
FROM (SELECT ID, cust_id, final, 0, final balance, date, note, 0
FROM transfers UNION ALL
SELECT ID, cust_id, 0, value, - value, date, note, 1
FROM trans_payments) t (ID, cust_id, final, value, balance, date, note, seq)
ORDER BY cust_id, date, seq
但我收到此错误:near "near "(": syntax error
转会:
ID int
cust_id int
tfrom nvarchar(200)
tto nvarchar(200)
price decimal(18, 2)
tax decimal(18, 2)
final Calculated
tnumber nvarchar(30)
note nvarchar(MAX)
date date
trans_payments:
ID int
cust_id int
value decimal(18, 2)
method nvarchar(30)
note nvarchar(MAX)
date date
假设我有这些数据:
转会:
ID cust_id final date
1 5 3000 22-09-2020
2 5 1500 25-09-2020
3 10 4000 28-09-2020
trans_payments:
ID cust_id value date
1 5 1000 22-09-2020
2 5 1500 23-09-2020
3 5 1000 01-10-2020
4 10 1000 28-09-2020
5 10 2000 01-10-2020
我想创建一个视图来显示客户对购买和付款的操作,如下所示:
客户 5:
cust_id final value Balance date
5 3000 0 3000 22-09-2020 --- > Purchases
5 0 1000 2000 22-09-2020 --- > payment
5 0 1500 500 23-09-2020 --- > payment
5 1500 0 2000 25-09-2020 --- > P
5 0 1000 1000 23-09-2020 --- > payment purchases
这里
【问题讨论】:
-
我认为 SQLite 不支持表别名后的列别名。将它们放在子查询中
-
@Charlieface 我遇到了很多我无法弄清楚的错误。
标签: sql-server sqlite