次のフィールドで構成されるテーブルbilling_historyがあります
CREATE TABLE [dbo].[BILLING_HISTORY2](
[ID] [int] IDENTITY(1,1) NOT NULL,
[READING_MONTH_YEAR] [date] NULL,
[READING] [int] NULL,
[CONSUMER_ID] [int] NULL,
[payment_status] [bit] NOT NULL
)
http://www.sqlfiddle.com/#!3/892e0/5
次のクエリは、消費者の最大支払額と最大未払い値を返します
SELECT MAX(READING) AS 'MAXIMUM_PAID_READING',consumer_id from billing_history2
where payment_status=0 GROUP BY consumer_id;
SELECT MAX(READING) AS 'MAXIMUM_UNPAID_READING',consumer_id from billing_history2
where payment_status=1 GROUP BY consumer_id;
ただし、それらを結合してMAXIMUM_UNPAID_READINGからMAXIMUM_PAID_READINGを減算し、現在の読み取り値を取得すると、上記の2つのクエリを結合することにより、consumer_idが一致するすべてのレコードが返されます。したがって、消費者がまだ請求書を支払っていない場合、PAID_READINGでIDが省略されるため、INNERJOINは結果を返しません。FULL OUTER JOINを使用すると、すべてのレコードが返されますが、差はNULLに設定されます。
以前の未払いの使用量から顧客の現在の使用量を差し引くことによって、顧客の現在の使用量を知る必要があります。
その人が過去に請求書を支払ったかどうかに関係なく、結果として生じる差が見つかるように、これら2つのクエリを結合するにはどうすればよいですか。