2013-03-28 6 views
-1

Вице-президент компании по управлению проектами нуждается в перечислении всех сотрудников и количестве часов, которые они работали в разных проектах. Таблица результатов должна содержать список последних и первых имен сотрудника (emp_last_name и emp_first_name), номер проекта (work_pro_number) и часы работы (work_hours).SQL Server 2012 JOIN

В таблице результатов должны быть указаны все сотрудники, независимо от того, назначены ли они для работы над проектом. Используйте имена псевдонимов для имен таблиц. Дайте каждому столбцу соответствующее имя столбца. Используйте команды CAST и CONVERT для вывода списка, который легко помещается на одной странице. Сортируйте выходные данные с помощью emp_last_name и emp_first_name. Какие сотрудники или сотрудники назначены на проект, но не работали какие-либо часы в проекте?

Использование JOIN, ORDER BY и объединить и фамилию в одну колонку

в порядке. Да, теперь у меня есть:

SELECT 
    emp_last_name "Last Name", 
    emp_first_name "Employee First Name", 
    work_pro_number "Project Number", 
    work_hours "Hours Worked" 
FROM 
    employee e 
JOIN 
    assignment a ON (e.emp_superssn = a.work_emp_ssn) 
ORDER BY 
    emp_last_name` 

но у меня все еще есть проблема с людьми, которые работают в разных проектных номерах. т.е. Хайдер Амин работает в цифрах проекта 20 и 30 как я комбинировать так, он будет иметь Hyer Амин и оба проектов, перечисленных 20, 30 (или что-то)

+0

может вы даете образцы записей с вашим желаемым результатом? –

+0

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

+0

Как будет отображаться этот номер номера проекта в нескольких проектах? я имею в виду предоставить образцы записей в табличном формате и показать нам, каков ваш желаемый результат. –

ответ

1

угождают опробованы ниже запрос ..

select e.emp_last_name, 
    e.emp_first_name, 
    (SELECT stuff((SELECT ', ' + convert(varchar(10),work_pro_number) FROM assignment WHERE e.emp_superssn = assignment.work_emp_ssn FOR XML PATH('')), 1,2,'')) AS work_pro_number, 
    sum(work_hours) AS work_hours 
FROM employee e 
LEFT JOIN assignment a ON e.emp_superssn = a.work_emp_ssn 
GROUP BY e.emp_last_name, e.emp_first_name, e.emp_superssn 
ORDER BY emp_last_name, emp_first_name