【发布时间】:2019-07-19 16:19:15
【问题描述】:
我有一个task 表,其中包含以下记录:
id | client_id | user_id | designation_id | total_hours
-----------------------------------------------------------------
1 | 14 | 134 | 1 | 4
2 | 14 | 135 | 2 | 1
3 | 15 | 136 | 3 | 3
4 | 16 | 137 | 4 | 4.5
还有designation表:
id | title
------------------------
1 | Cloud Analyst
2 | Data Analyst
3 | Data QA Analyst
4 | Project Manager
.
.
指定记录是动态的,因此我不想对它们进行硬编码。
我正在尝试获得以下输出:
client | user | Cloud Analyst | Data Analyst | Data QA Analyst | Project Manager
-------------------------------------------------------------------------------------------
14 | 134 | 4 | | |
14 | 135 | | 1 | |
15 | 136 | | | 3 |
16 | 137 | | | | 4.5
言辞:
- 除了
client_id和task表中的designation_id列之外,将所有可用的名称(来自名称表)列出为columns。 -
total_hours值应放置在相应的designation列下,即,如果用户是cloud analyst(通过 designation_id),则其hours值应位于cloud analyst列下。
这是我尝试做的:
SELECT t.client_id, t.user_id,
(case
when d.id = t.designation_id then t.total_hours
else ''
end as d.title)
FROM task t
INNER JOIN designations d
on d.id = t.designation_id
ORDER BY client_id ASC
如何实现输出?
【问题讨论】: