2016-10-24 3 views
-3

Как объединить эти столбцы:объединить несколько столбцов в один

id|clock_in |clock_out|lunch_out|lunch_in 
1 | 8:00 | 5:10 | 1:00 | 1:50 
2 | 8:02 | 5:45 | 1:02 | 1:55 

в эту таблицу:

id| activity | time 
1 | clock_in | 8:00 
1 | clock_out | 5:10 
1 | lunch_out | 1:00 
1 | lunch_in | 1:55 
2 | clock_in | 8:02 
2 | clock_out | 5:45 
2 | lunch_out | 1:02 
2 | lunch_in | 1:55 
+0

Вы можете показать нам или описать, что вы уже предприняли? Где ваша фактическая команда обновления таблицы, которую вы пробовали? Какова была ошибка или проблема, которую вы получили? – gravity

+0

Я понятия не имел, как это сделать? – noishi

+0

Отлично, покажите нам, что вы пробовали до сих пор, пожалуйста. В качестве альтернативы, пожалуйста, прочитайте [ask] направление относительно того, что мы ожидаем от четко сформулированного вопроса. – gravity

ответ

0

Это простой union с одной подразделами выберите для каждого столбца:

select id, 'clock_in' as activity, clock_in as time 
from the_table 
union all 
select id, 'clock_out' as activity, clock_out 
from the_table 
union all 
select id, 'lunch_out' as activity, lunch_out 
from the_table 
union all 
select id, 'lunch_in' as activity, lunch_in 
from the_table 
order by id, 
     case activity 
     when 'clock_in' then 1 
     when 'clock_out' then 2 
     when 'lunch_out' then 3 
     when 'lunch_in' then 4 
     end; 

order by напоминает порядок, который вы указали как образец, по-видимому, не о в колонке time

Смежные вопросы