簡體   English   中英

如何在 SQL 中沿期初余額計算余額

[英]How to calculate balance along opening balance in SQL

任何人都可以幫我寫一個 SQL 查詢來找到頂部余額的余額嗎?

所需的 output:

1

它目前不顯示“期初余額”,但我也想要它。

這是示例數據:

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, 2, 2, '2021-05-07',
        'Payment', 0.00, 300, ''),
       (NULL, 3, 2, '2021-05-08',
        'Payment', 0.00, 200, '')

這可能取決於您使用的數據庫供應商,但許多支持 OVER 子句。 這里的解釋:

使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM