1

次の結果のクエリを作成するには、いくつかの支援が必要です。

ここに画像の説明を入力

私は現在、ユーザーとユーザーが最初に支払うべき金額をリストする Accounts と、ユーザーが行った支払いのすべての記録を保持する Payments という 2 つのテーブルを持っています。JOIN を使用してテーブルをマージする方法は知っていますが、未払額と支払額を取得するために必要な計算を行う方法がわかりません。

Accounts の列は、ID、Name、Account、Borrowed
で構成されます Payments の列は、ID、AcctID、PaymentAmt で構成されます

これらの両方のテーブルを結合し、計算を行って、ユーザーが現在支払った金額と、ユーザーが最初の借入金額からまだ借りている金額を表示するクエリが必要です。

テーブルデータの例:

アカウント表

ID = 3、名前 = Joe、アカウント = ビジネス、借用 = 100.00

支払い表

ID = 1、AcctID = 3、PaymentAmt = 10.00
ID = 2、AcctID = 3、PaymentAmt = 10.00

C# で MS SQL を使用しています。

4

3 に答える 3

3

結合してから、SUM と GROUP BY を使用するだけです。

SELECT a.Name ,
       a.Account ,
       a.Borrowed  - COALESCE(SUM(p.PaymentAmt),0) as [Still Owes],
       COALESCE(SUM(p.PaymentAmt),0) as Paid,
       a.Borrowed
FROM  
       ACCOUNTS  a
       LEFT JOIN PAYMENTS p
       ON a.ID = p.AcctID 
GROUP BY
       a.Name ,
       a.Account ,
       a.Borrowed

支払いが行われなかった場合に、LEFT JOIN を実行したことに注意してください。これには、NULL SUM を 0 に変換する COALESCE の使用も必要です。

デモ

于 2013-05-14T16:16:53.143 に答える
2

これは次のことを行う必要があります。

SELECT  A.[Name], 
        A.Account,
        A.Borrowed - ISNULL(P.Paid,0) [Still Owes],
        ISNULL(P.Paid,0) Paid,
        A.Borrowed
FROM Accounts A
LEFT JOIN ( SELECT  AcctID,
                    SUM(PaymentAmt) Paid
            FROM Payments 
            GROUP BY AcctID) P
    ON A.ID = P.AcctID
于 2013-05-14T16:17:15.303 に答える
0
select  a.Name
,       a.Account
,       a.Borrowed - coalesce(sum(p.PaymentAmt),0) as [Still Owes]
,       coalesce(sum(p.PaymentAmt),0) as Paid
,       a.Borrowed
from    Accounts a
left join
        Payments p
on      p.AcctID = a.ID
group by
        a.Name
,       a.Account
,       a.Borrowed
于 2013-05-14T16:16:56.783 に答える