0

次のように、金融取引とその行の 1 つのテーブルからクエリを抽出するのを手伝っていただく必要があります: Accountnumber :たとえば (4568643) Transactionamount :たとえば (1000 ドル) Kindoftransaction (借方または貸方) transactionfileこのトランザクションにリンクされたファイル番号)

すべて (Transactionamount) が (Kindoftransaction) から "credit" を保持し、すべて (Transactionamount) が "debit" を保持している合計から減算した後、各 (transactionfile) の正味残高のクエリを抽出するためにあなたの助けが必要です。ここで、(Accountnumber) は ( 4568643)

4

2 に答える 2

0

これは役に立ちますか?- テーブル定義を投稿していただけると助かります

DECLARE @transactions TABLE
(
    [AccountNumber] INT NOT NULL,
    [TransactionAmount] DECIMAL(18, 10) NOT NULL,
    [KindOfTransaction] CHAR(1) NOT NULL, -- this could be better served as a boolean / bit field
    [TransactionFile] INT NOT NULL
)

-- dummy data
INSERT INTO @transactions VALUES(4568643, 100, 'C', 123)
INSERT INTO @transactions VALUES(4568643, 150, 'C', 124)
INSERT INTO @transactions VALUES(4568643, 50, 'D', 125)
INSERT INTO @transactions VALUES(2345623, 100, 'C', 126)
INSERT INTO @transactions VALUES(2345623, 79, 'C', 127)

    -- here's the actual query to return your data using a common table expression
;WITH cteAccountSummary (AccountNumber, TotalCredits, TotalDebits) AS (
    SELECT  [AccountNumber], 
            SUM(
                CASE [KindOfTransaction]
                    WHEN 'C' THEN [TransactionAmount]
                    ELSE 0
                END
            ),
            SUM(
                CASE [KindOfTransaction]
                    WHEN 'D' THEN [TransactionAmount]
                    ELSE 0
                END
            )
    FROM @transactions
    GROUP BY [AccountNumber]
)
SELECT [AccountNumber], TotalCredits - TotalDebits AS 'NetFinancialPosition'
FROM cteAccountSummary
于 2012-07-07T22:57:57.887 に答える
0
select transactionfile, sum(case when kindoftransaction = 'debit' then -1 else 1 end * transactionamount)
from financial
where accountnumber = 4568643
group by transactionfile
于 2012-07-07T22:59:39.040 に答える