如何解决将几行转置为列的 SQL 查询
工作表
Job id
Job title
job type
JobID jobTitle jobType
1 design manual
2 test automated
3 deploy automated
jobEmp 表
emp id
job id
first name
last name
job role(manager,lead,dev)
empid jobid firstname lastname jobrole
1 1 mickey mouse 1
2 1 minnie mouse 2
3 1 tom jerry 3
4 2 minnie mouse 1
5 2 abc 3
因此一个作业可以有超过 1 个 emp,因此 jobEmp 表中单个作业将有超过 1 行。
jobId | jobTitle | jobType | manager | Lead | dev
1 Design manual mickey mouse minnie mouse tom jerry
2 Test Automated minnie mouse abc
请帮忙!
解决方法
您可以通过以下方式进行:
SELECT DISTINCT (*) FROM
(SELECT
j.jobId,j.jobTitle,j.jobType,CONCAT (je.first_name,je.last_name) AS NAME
FROM job j
INNER JOIN jobEmp as je) as JobTable
JOIN (SELECT DISTINCT jobRole AS 'manager'
FROM jobEmp
WHERE
role = 'manager'
) AS manager_col
ON manager_col.jobId = JobTable.jobId
JOIN (SELECT DISTINCT jobRole AS 'Lead'
FROM jobEmp
WHERE
role = 'lead'
) AS lead_col
ON lead_col.jobId = JobTable.jobId
JOIN (SELECT DISTINCT jobRole AS 'dev'
FROM jobEmp
WHERE
role = 'dev'
) AS dev_col
ON dev.jobId = JobTable.jobId
请确保根据您的表格名称进行更改,因为我猜例如 Job id
之间没有空格
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。