Ошибка -> Может кто-нибудь объяснить (новичку), как присоединиться вне подзапроса в операторе выбора? - PullRequest
0 голосов
/ 15 марта 2019

код:

select
 cal.fiscal_week, 
 h.role_type, 
 h.se,
 sub.*
from (
  select
    ds_denali__call_disposition__c as disposition, 
    datepart(hour, dateadd(hour, -5, ds_denali__call_started__c)) as call_time,
    datepart(dw, ds_denali__call_started__c) as day_of_week,
    ds_denali__owner__c as owner
  from homer.sfdc.ds_denali__dialsource_action__c 
  where ds_denali__call_disposition__c in ('No Contact', 'Voicemail', 'Internal', 'Progression - Decs Mkr', 'Progression - Other', 'No Prog - Decs Mkr', 'Decision Positive', 'Decision Negative', 'No Prog - Other')
  and trunc(ds_denali__call_started__c) >= 2018-11-01) sub
left join homer.homer_mapping.insidesales_hierarchy h on ds.ds_denali__owner__c = h.sfdc_id
left join homer.homer_mapping.adp_fiscal_calendar cal on trunc(ds.ds_denali__call_started__c) = cal.day_date

Мне нужно присоединиться ко всему, но 'homer.sfdc.ds_denali__dialsource_action_c' - таблица монстров, поэтому я пытаюсь сократить как можно больше времени, выполняя подзапросы. Но мне все еще нужно соединить его с двумя другими таблицами, которые у нас есть (перечислены в левом соединении). Ошибка, с которой я сталкиваюсь, состоит в том, что она продолжает говорить мне, что «ds». не существует Я просто не уверен, что это основополагающая вещь, с которой я не знаком, так как я самоучка и довольно новая. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 15 марта 2019

Вы, похоже, не понимаете псевдонимов. Я предполагаю, что столбец ds.ds_denali__owner__c предназначен для ссылки на столбец таблицы homer.sfdc.ds_denali__dialsource_action__c в вашем подзапросе. В данный момент он ищет таблицу с именем ds в базе данных / схеме по умолчанию, поэтому вы видите ошибку.

Далее вы, похоже, не понимаете подзапросы правильно. Когда вы пишете подзапрос, вы по сути создаете новую таблицу, которая затем может быть использована в другом месте вашего запроса. в этом случае созданная вами таблица является псевдонимом (именованным) sub и содержит 4 столбца. (расположение, call_time, day_of_week и владелец)

Собираем это вместе

left join homer.homer_mapping.insidesales_hierarchy h on ds.ds_denali__owner__c = h.sfdc_id

должно стать

left join homer.homer_mapping.insidesales_hierarchy h on sub.owner = h.sfdc_id

и исправить

left join homer.homer_mapping.adp_fiscal_calendar cal on trunc(ds.ds_denali__call_started__c) = cal.day_date

сначала нужно добавить ds_denali__call_started__c в свой подзапрос.

В заключение я бы очень удивился, если бы ваш подзапрос на самом деле ускорил дело. я бы полностью ожидал, что это замедлит процесс по сравнению с непосредственным присоединением к homer.sfdc.ds_denali__dialsource_action__c

...