-1

公司负责项目管理的副总裁需要一份所有员工的清单以及他们在各种项目上工作的小时数。结果表应列出员工的姓氏和名字(emp_last_name 和 emp_first_name)、项目编号(work_pro_number)和工作时间(work_hours)。

结果表应列出所有员工,无论他们是否被分配从事项目工作。使用别名作为表名。给每列一个适当的列名。使用 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`

但是我仍然对从事不同项目编号的人有疑问。即 Hyder Amin 在项目编号 20 和 30 中工作我如何结合,这样它将拥有 Hyer amin 并且两个项目都列出了 20、30(或其他)

4

1 回答 1

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
于 2013-03-28T08:43:02.790 回答