I have a task table with following records:
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
And designation table:
id  |  title
------------------------
1   | Cloud Analyst
2   | Data Analyst
3   | Data QA Analyst
4   | Project Manager
.
.
Designation records are dynamic and so I don't want to hard-code them.
I am trying to get following output:
client  |  user  |  Cloud Analyst  |  Data Analyst  |  Data QA Analyst  |  Project Manager
-------------------------------------------------------------------------------------------
14      |  134   |  4              |                |                   |          
14      |  135   |                 |  1             |                   |
15      |  136   |                 |                |   3               |
16      |  137   |                 |                |                   |   4.5
In words:
- list all available designations (from designation table) as columnsin addition toclient_id, anddesignation_idcolumns fromtasktable.
- total_hoursvalues should be placed under respective- designationcolumns, .i.e, if user is- cloud analyst(by designation_id) his- hoursvalue should be under- cloud analystcolumn.
Here's how I tried to do:
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
How can I achieve the output?
 
     
    