如何解决如何在SQL中沿期初余额计算余额
有人可以帮我写一个 SQL 查询来找到余额,同时期初余额也在上面吗?
所需的输出:
目前没有显示“期初余额”,但我也想要。
这是示例数据:
create database test
use test
CREATE TABLE [dbo].[tbl_Ledger]
(
[Ledg_ID] [int] Primary Key IDENTITY(1,1) NOT NULL,[Ledg_p_ID] [int] NULL,[Ledg_Pay_ID] [int] NULL,[Ledg_FarmerID] [int] NOT NULL,[Ledg_Date] [date] NOT NULL,[Ledg_Desc] [varchar](255) NULL,[Ledg_Debit] [money] NOT NULL,[Ledg_Credit] [money] NOT NULL,[Ledg_Remarks] [varchar](255) NULL
)
INSERT INTO [dbo].[tbl_Ledger] ([Ledg_p_ID],[Ledg_Pay_ID],[Ledg_FarmerID],[Ledg_Date],[Ledg_Desc],[Ledg_Debit],[Ledg_Credit],[Ledg_Remarks])
VALUES (1,NULL,2,'2021-05-06','Purchase',500,0.00,''),(NULL,'2021-05-07','Payment',300,3,'2021-05-08',200,'')
解决方法
这可能取决于您使用的数据库供应商,但很多都支持 OVER 子句。 见说明here:
使用 OVER 您可以创建一列的累积总和。 所以你的查询看起来像这样:
SELECT ID,p_ID,FarmerID,Datee,Description,Debit,Credit,SUM (Debit - Credit) OVER (ORDER BY Datee) AS Balance
FROM tbl_Ledger
,
如果您想要每一行的“期初”余额,只需减去该行发生的情况:
SELECT l.*,SUM(Debit - Credit) OVER (ORDER BY Datee) AS Balance
SUM(Debit - Credit) OVER (ORDER BY Datee) - (Debit - Credit) AS Opening_Balance
FROM tbl_Ledger l
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。