2014-01-22 4 views
-1

у меня есть этот запрос, который должен дать этот вид продукции -SQL Server: выбрать на Multiple таблицу с вступайте не завершает

NAME DATE_JOINED TOTAL_GROUPS_FORMED LOANS_ADVANCES TOTAL_ISSUED_AMOUNT TOTAL_LOAN_AMT_REPAID TOTAL_ACCOUNT TOTAL_CLIENTS_RECRUITED TOTAL_AMT_DEPOSITS TOTAL_AMT_WITHDRAWALS NUMBER_DROPOUTS  REPORT_DATE 

Это мой запрос.

SELECT 
    D.NAME, 
    0.0 AS DATE_JOINED, 
    0 AS TOTAL_GROUPS_FORMED, 
    COUNT(LOAN_NUMBER) AS LOANS_ADVANCES, 
    SUM(ISSUED_AMOUNT) AS TOTAL_ISSUED_AMOUNT, 
    0.0 AS TOTAL_LOAN_AMT_REPAID, 
    COUNT(A.ACCOUNT_NUMBER) AS TOTAL_ACCOUNT, 
    COUNT(C.CUSTOMER_CODE) AS TOTAL_CLIENTS_RECRUITED, 
    0.0 AS TOTAL_AMT_DEPOSITS, 
    0.0 AS TOTAL_AMT_WITHDRAWALS, 
    COUNT(CH.ACCOUNT_NUMBER) AS NUMBER_DROPOUTS, 
    D.REPORT_DATE FROM SALES_OFFICER D 
LEFT JOIN LOANS L ON D.SALES_OFFICER_CODE=L.OFFICER_CODE 
LEFT JOIN OPEN_ACCOUNT A ON D.SALES_OFFICER_CODE=A.OFFICER_CODE 
LEFT JOIN CUSTOMERS C ON D.SALES_OFFICER_CODE=C.OFFICER_CODE 
LEFT JOIN CLOSED_ACCOUNT CH ON D.SALES_OFFICER_CODE=CH.OFFICER_CODE 
GROUP BY D.NAME,D.REPORT_DATE 

Этот запрос не завершен, вероятно, потому, что у всех таблиц много данных.

Есть ли другой способ получить тот же результат, когда информация одного сотрудника отдела продаж может быть просмотрена из нескольких таблиц и объединена вместе как одна запись, сгруппированная по отчетной дате.

+0

Пожалуйста, отредактируйте ваше сообщение, чтобы его было легко читать. http://stackoverflow.com/editing-help – TTeeple

+1

Вопросы принимаются более серьезно (многими), когда код отформатирован, поэтому он доступен для чтения. –

+0

Посмотрите примерный план выполнения этого запроса. Это может помочь http://technet.microsoft.com/en-us/library/ms191194.aspx – Backs

ответ

3

Вы получаете декартовую продукцию для каждого сотрудника по продажам - количество кредитов ВРЕМЯ количество открытых счетов ВРЕМЯ количество клиентов ВРЕМЯ количество закрытых счетов.

Перед выполнением объединения необходимо суммировать каждое измерение. Вот начало:

from sales_offices so left join 
    (select l.OFFICER_CODE, COUNT(*) AS LOANS_ADVANCES, 
      SUM(ISSUED_AMOUNT) AS TOTAL_ISSUED_AMOUNT 
    from loans l 
    group by l.OFFICER_CODE 
    ) 
    on so.SALES_OFFICER_CODE = l.OFFICER_CODE 

Это только предположение, потому что вы не использовать псевдонимы таблиц на всех колонках.

+1

Хорошее место, учитывая, что почти никакой информации не было дано. Было бы тривиально замечать в плане. – usr

+0

благодарит Гордона, это помогло мне решить проблему. я весьма признателен –

Смежные вопросы