私は、230 ドルの基本費用で開始し、クラス セッションに登録された各個人と一緒に参加する保護者の数を取得し、その数に 55 ドルを掛けるクエリの作成に取り組んでいます (保護者 1 人あたりの費用)。セッション)。次に、参加者がこれまでに支払った金額を確認し、計算された合計費用からそれを差し引きます。私の問題は、各行にメールを含める必要があることです。そのためGROUP BY GuestEmail
、クエリの一部が必要です。このGROUP BY
行COUNT(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 以外の数値を返すようにクエリを変更するにはどうすればよいですか?