1

状況があります。

このようなクレジット列とデビット列を含むデータテーブルがあります

Month     Credit     Debit
Sep       1422825      0
Oct         0        1422825
Oct       1695017.5    0
Nov         0         1400000
Nov         0         295018

このように表示されるバランスが欲しい

Month     Credit     Debit       Balance
Sep       1422825      0
Oct         0        1422825      (1422825 of Credit-1422825 of Debit)=0
Oct       1695017.5    0
Nov         0         1400000     
Nov         0         295018       (1695017.5 of credit-1400000+295018)=0.5

クリスタルレポートにその方法を示す必要があります。

4

1 に答える 1

0

これが2005年に最適化されたソリューションです。2008年でもうまく機能すると確信しています。(月には整数を使用してください。簡単です...)

DECLARE @Temp TABLE (Month int, Credit money, Debit money, Balance money)

DECLARE @RunningTotal money

SET @RunningTotal = 0

INSERT INTO @Temp
SELECT Month, Credit, Debit, null
FROM Datatable
ORDER BY Month

UPDATE @Temp
SET @RunningTotal = Balance = @RunningTotal + Credit - Debit
FROM @Temp

SELECT * FROM @Temp

編集(これは最初のステップから続きます):

グループ(月)の最後のレコードのみの合計を表示する必要がある場合は、次のようなランキング機能を使用できます...

;WITH Temp2 AS
(
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY Month
            ORDER BY Credit DESC, Debit DESC -- whatever order inside group you need
        ) AS N
     FROM @Temp
)
SELECT
    Month,
    Credit, 
    Debit, 
    Balance = CASE WHEN N = 1 THEN Balance ELSE NULL END
FROM Temp2

これはテストされていません。コードは私の頭から直接書かれています:P

于 2013-06-14T11:30:44.573 に答える