-1

会社のプロジェクト管理担当副社長は、全従業員のリストと、さまざまなプロジェクトに従事した時間数のリストを必要としています。結果テーブルには、従業員の姓名 (emp_last_name および emp_first_name)、プロジェクト番号 (work_pro_number)、および勤務時間 (work_hours) がリストされます。

結果テーブルには、プロジェクトの作業に割り当てられているかどうかに関係なく、すべての従業員が一覧表示されます。テーブル名にはエイリアス名を使用します。各列に適切な列名を付けます。CAST および CONVERT コマンドを使用して、1 ページに簡単に収まるリストを生成します。出力を emp_last_name および emp_first_name でソートします。プロジェクトに割り当てられているが、プロジェクトで何時間も働いていない従業員は?

を使用してJOINORDER BY名と姓を 1 つの列に結合します

わかった。はい、今私は持っています:

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 に答える