Существует несколько десятков потоков с этим названием, но ни один из найденных мне не помог.SQL Nested Calculation JOIN
У меня есть запрос, состоящий из двух таблиц: таблицы клиентов и таблицы транзакций
Каждый клиент может иметь несколько записей в таблице транзакций. То, что я хочу сделать, - это определенный период времени (предполагать, что даты отслеживаются в таблице «Транзакции»), чтобы каждый клиент в таблице «Клиент» находил три разных расчета из таблицы «Транзакции» для этого клиента. Первое число вычисляет количество выданных кавычек, второе вычисляет # порядков, а третье - общее количество котировок, которые не превращаются в порядок. Сами вычисления действительно не имеют значения, поскольку они связаны с решением этой проблемы.
Я чувствую, что есть какое-то соединение. Я не использую должным образом, чтобы получить правильные значения, но вот что я до сих пор (упрощен).
SELECT Customer.CustomerID, Count(TransactionAlias1.*), Count(TransactionAlias2.*), Count(TransactionAlias3.*)
FROM Customer
LEFT JOIN (SELECT * FROM Transactions WHERE [...]) TransactionAlias1 ON
TransactionAlias1.CustomerID = Customer.CustomerID
LEFT JOIN (SELECT * FROM Transactions WHERE [...]) TransactionAlias2 ON
TransactionAlias2.CustomerID = Customer.CustomerID
LEFT JOIN (SELECT * FROM Transactions WHERE [...]) TransactionAlias3 ON
TransactionAlias3.CustomerID = Customer.CustomerID
GROUP BY Customer.CustomerID
Что для меня странно, что только первые два внутренних соединения создают правильные значения для первых двух графов. Добавление третьего внутреннего соединения отменяет другие значения. Выполнение оператора select внутри каждого внутреннего соединения создает правильный счетчик.
Любая помощь будет принята с благодарностью. Если кто-либо из вас узнает о другой статье StackOverflow, которая касается этой же проблемы, сообщите мне.
Я сказал, что внутреннее соединение в моем сообщении, но я должен был сказать, что левое соединение. Я вообще не использовал внутренние соединения. – Rafiki