0

私は、230 ドルの基本費用で開始し、クラス セッションに登録された各個人と一緒に参加する保護者の数を取得し、その数に 55 ドルを掛けるクエリの作成に取り組んでいます (保護者 1 人あたりの費用)。セッション)。次に、参加者がこれまでに支払った金額を確認し、計算された合計費用からそれを差し引きます。私の問題は、各行にメールを含める必要があることです。そのためGROUP BY GuestEmail、クエリの一部が必要です。このGROUP BYCOUNT(Guest.ID)では、複数のケースで 2、3、または 4 を返す必要がありますが、常に 1 を返します。

SELECT Registration.ID, Guest.GuestEmail,
    CASE
        WHEN ((COUNT(Guest.ID) * 55) + 230) - SUM(DISTINCT Transaction.AuthorizationAmount) is not null
            THEN ((COUNT(Guest.ID) * 55) + 230) - SUM(DISTINCT  Transaction.AuthorizationAmount)
        WHEN ((COUNT(Guest.ID) * 55) + 230) is not null AND SUM(DISTINCT Transaction.AuthorizationAmount) is null
            THEN ((COUNT(Guest.ID) * 55) + 230)
        WHEN ((COUNT(Guest.ID) * 55) + 230) is null AND SUM(DISTINCT Transaction.AuthorizationAmount) is not null
            THEN - SUM(DISTINCT Transaction.AuthorizationAmount)
        ELSE '0'
    END AS Balance

    FROM Registration 
    LEFT JOIN Transaction ON Registration.ID = Transaction.ID 
    LEFT JOIN Guest ON Registration.ID = Guest.ID 

    WHERE Registration.IsActive = 'True' AND Registration.ID = 111111 AND ConfirmationEmail = 0 AND Guest.IsActive = 'True' AND Registration.ID = Guest.ID
    GROUP BY Registration.ID, Guest.GuestEmail

Registration は生徒の情報を保持するテーブルで、Guest は保護者の情報を保持します。各親は、登録とゲストの両方に含まれる ID によって、子供の親として識別されます。IDは保護者、生徒ともに同じ番号です。Transaction.AuthorizationAmount は、登録者が既に支払った金額です。ゲストには、ゲストごとに個別の行があります。返される電子メールは、Guest テーブルに格納されている親の電子メールです。COUNT(Guest.ID)質問: 1 以外の数値を返すようにクエリを変更するにはどうすればよいですか?

4

1 に答える 1