Я написал запрос, в котором я хочу отобразить «Номер клиента» (таблица CUSTOMER), «Число счетов» (таблица «INVOICE»), то есть общее количество счетов для каждого клиента, и «Всего покупок Cus» (рассчитывается путем объединения таблиц CUSTOMER, INVOICE и LINE), которая представляет собой сумму всех покупок во всех счетах, принадлежащих каждому клиенту.
В первом запросе указано неправильное «количество счетов».
--First Query
SELECT CUSTOMER.CUST_NUM AS "Customer Number",
COUNT(INVOICE.INV_NUM) AS "Number of Invoices",
SUM(LINE.LINE_UNITS * LINE.LINE_PRICE) AS "Total Cus Purchases"
FROM CUSTOMER
JOIN INVOICE
ON CUSTOMER.CUST_NUM = INVOICE.CUST_NUM
JOIN LINE
ON INVOICE.INV_NUM = LINE.INV_NUMBER
GROUP BY CUSTOMER.CUST_NUM;
Customer Code Number of Invoices Total Cus Purchases
1000 5 188.72
1003 6 432.8
1001 3 34.92
1002 1 70.44
Тем не менее, второй запрос (это замечено, когда опущен оператор соединения для LINE, который используется для вычисления "Всего покупок Cus"), выдает правильное "Количество счетов".
--Second Query
SELECT
CUSTOMER.CUST_NUM AS "Customer Number",
COUNT(INVOICE.INV_NUM) AS "Number of Invoices"
FROM INVOICE
JOIN CUSTOMER ON INVOICE.CUST_NUM = CUSTOMER.CUST_NUM
GROUP BY CUSTOMER.CUST_NUM;
Customer Code Number of Invoices
1000 3
1003 2
1001 2
1002 1
Как мне исправить первый запрос, чтобы он выплевывал значения, показанные во втором запросе?
(Примечание. Общая сумма покупок правильная, неправильный столбец «Количество счетов»).