sql-server - 需要帮助从表创建分类帐

标签 sql-server sql-server-2012

大家..我只是陷入这样的情况,我有两个如下表。第一个表是 tblCharge,第二个表是 tblPayment

chargeId   Plan   TotalAmount
 1         A        400
 2         B        200
 3         C        300 


PaymentId  ChargeId  PayAmount
 1            1       100
 2            1       50
 3            1       70
 4            1       120
 5            1       10
 6            2       50
 7            2       70

我希望通过连接上面的两个表来输出如下所示的结果。应从每行的支付金额中减去总金额。

Plan    Amount  Pay
A       400     100
A       300     50
A       250     70
A       180     120
A       60      10

最佳答案

使用SUM OVER():

SQL Fiddle

SELECT
    c.ChargeId,
    Amount = TotalAmount 
                - SUM(PayAmount) OVER(PARTITION BY c.[Plan] ORDER BY p.PaymentId) 
                + PayAmount,
    p.PayAmount
FROM tblCharge c
INNER JOIN tblPayment p
    ON p.ChargeId = c.ChargeId

关于sql-server - 需要帮助从表创建分类帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36170430/

相关文章:

sql-server - 如何创建互斥表列

sql-server - 自动恢复SQL Server数据库备份以进行测试

sql - 复制具有主从关系的多条记录

sql - 是否可以反编译和读取 SSIS 包代码?

sql-server - 根据用户限制对表中某些行的访问

sql - 向表中添加列然后设置值会出错

sql - 在 SQL Server 中将整数值转换为小时值 (AM/PM)

sql-server - 当 SQL Server 发生错误时停止执行?

c# - EF6 连接需要很长时间才能失败

SQL 查询在 SQL Server 2012 中运行良好,但在 SQL Server 2008 R2 中无法执行