2014-02-14 4 views
0

пожалуйста, помогитеТаблицы запросов с таким же именем столбца

У меня есть 5 временных таблиц, а именно #TEMPTABLE, #TotEmp, #TotEnrol, #NotEnrol и #PercEnrol.

TempTable содержит следующее:
Staff Number | Employee_Name | Home_Branch | Enrolledd | Card | Tested
(Enrolledd - показатель того, зачислен сотрудник или нет - 1/0)

TotEmp содержит следующее (Общее количество сотрудников в отрасли)
Home_Branch | Employee

TotEnrol содержит следующее (Общее количество зачисленных сотрудников в отрасли)
Home_Branch | Enrolled

NotEnrol содержит следующее (Общее количество сотрудников, не зачисленных в отрасли)
Home_Branch | Not_Enrolled

PercEnrol содержит следующие (в процентах от включенных работников в отрасли)
Home Branch | Percentage

Я хотел бы сделать выбор, который показывает следующее - И процент поступил должен быть только ветви под 90%, а результаты должны быть сгруппированы по ветви.

Home_Branch | Enrolled (from TotEnrol) | Employee (TotEmployee) | Not Enrolled (NotEnrol)| Percentage (PercEnrol)

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

ответ

0

Если я правильно понимаю ваш вопрос, я считаю, что это должно работать для вас:

SELECT  T1.Home_Branch, 
      T3.Enrolled, 
      T2.Employee, 
      T4.NotEnrolled, 
      T5.Percentage 
FROM  #TEMPTABLE T1 
INNER JOIN #TotEmp T2 ON T1.Home_Branch = T2.Home_Branch 
INNER JOIN #TotEnrol T3 ON T1.Home_Branch = T3.Home_Branch 
INNER JOIN #NotEnrol T4 ON T1.Home_Branch = T4.Home_Branch 
INNER JOIN #PercEnrol T5 ON T1.Home_Branch = T5.Home_Branch 
WHERE  T5.Percentage < 90 

Я использовал псевдонимы на столах, так что вы можете указать, какое таблице вы хотите столбец, выбранный выйти из, это будет устранить 5 экземпляров Home_Branch Вы упомянули. Алиасы таблицы можно назвать лучше, чем T1, T2, T3 etc, но ваши имена ваших временных таблиц уже довольно короткие!

Вы также указали, что процент составляет менее 90%, следовательно, пункт WHERE.

В качестве побочного примечания вам, вероятно, не нужно было настраивать все эти временные таблицы (если вам не было специально сказано сделать это так) в зависимости от исходных данных, вы могли бы использовать один оператор с GROUP BY , подзапросы или пару CTEs.

Ответит ли это на ваш вопрос?

+0

XN16 - результат выглядит правильно, спасибо, однако я получаю повторяющиеся результаты. Когда я пытаюсь GROUP BY Home_Branch, я получаю неоднозначное имя столбца «Home_Branch». – LisaRieken

+0

Сделал SELECT DISTINCT - это, похоже, помогло. Еще раз спасибо :) – LisaRieken

+0

@LisaRieken Неоднозначное имя столбца связано с несколькими столбцами с тем же именем. Снова вы можете использовать псевдонимы, например. 'T1.Home_Branch'. Или, как вы обнаружили, 'SELECT DISTINCT' работает в этом случае, но с более сложными запросами, которые больше столбцов вы не сможете использовать. – XN16

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