Я написал этот кусок SQL, я знаю, что есть способы заставить его работать быстрее, используя правильные методы.
SELECT DISTINCT
ACCOUNTNUM,
FIRSTNAME AS NAME,
LASTNAME AS SURNAME,
(PHONE + ' ' + CELLULARPHONE) AS PHONENUM,
EMAIL,
(SELECT TOP 1 CREATEDDATE
FROM RBOTRANSACTIONTABLE
WHERE CUSTACCOUNT = ACCOUNTNUM
ORDER BY CREATEDDATE DESC) AS LASTVISIT, -- LAST VISIT,
(SELECT COUNT(TRANSACTIONID)
FROM RBOTRANSACTIONTABLE
WHERE CUSTACCOUNT = ACCOUNTNUM) AS TOTALVISITS, -- TOTAL VISITS,
(SELECT SUM(PAYMENTAMOUNT)
FROM RBOTRANSACTIONTABLE
WHERE CUSTACCOUNT = ACCOUNTNUM) AS TOTALSALES, -- TOTAL SALES,
(SELECT SUM(DISCAMOUNT)
FROM RBOTRANSACTIONTABLE
WHERE CUSTACCOUNT = ACCOUNTNUM) AS DISCOUNT
FROM
CUSTOMER
LEFT OUTER JOIN
RBOTRANSACTIONTABLE ON CUSTACCOUNT = ACCOUNTNUM
Я знаю, что если я использую какое-то соединение, я неНеобязательно каждый раз повторять FROM RBOTRANSACTIONTABLE
(код после Email
столбца).Приведенный выше код отлично подходит для моих требований, но я знаю, что в моих знаниях пропущены пробелы, я просто не знаю что .
Я ищу подробные ответы опочему вышеупомянутое решение не рекомендуется и почему ваше решение.