R!sh! Ответов: 1

Как преобразовать дни в столбцы из результатов SQL


дата количество time_spent

2020-04-01 C190225 06:55:00
2020-04-02 C190225 02:45:00
2020-04-02 C130872 00:15:00
2020-04-03 C130872 00:20:00
2020-04-06 C170541 00:00:00
2020-04-06 C190225 00:04:00
2020-04-06 00:16:00
2020-04-07 C180385 00:00:00
2020-04-07 00:01:00
2020-04-07 C190294 00:04:00
2020-04-07 C170572 00:25:00
2020-04-07 C160032 00:00:00
2020-04-08 C180385 00:00:00
2020-04-08 00:00:00
2020-04-08 C130718 00:10:00
2020-04-09 C190294 00:00:00
2020-04-09 C180385 00:12:00
2020-04-11 C160032 00:00:00
2020-04-14 C130872 00:00:00
2020-04-14 C190225 00:02:00
2020-04-14 C170572 00:00:00
2020-04-14 00:07:00
2020-04-15 C190225 00:01:00
2020-04-15 C130872 00:00:00
2020-04-15 59101 00:21:00
2020-04-15 с-9000-0197 00:15:00
2020-04-15 C180385 00:20:00
2020-04-15 C180040 00:25:00
2020-04-16 00:37:00
2020-04-16 C190294 01:40:00
2020-04-16 C180385 00:15:00
2020-04-16 1962126S 00:02:00
2020-04-17 C130872 00:00:00
2020-04-17 00:01:00
2020-04-17 C190225 00:00:00
2020-04-17 C180385 00:00:00
2020-04-17 59101 00:00:00
2020-04-17 C180446 00:02:00
2020-04-20 C170541 00:00:00
2020-04-20 C180040 03:30:00
2020-04-20 C180481 00:00:00
2020-04-20 C180446 00:01:00
2020-04-20 00:01:00
2020-04-20 C180385 00:01:00
2020-04-20 C130872 00:00:00
2020-04-21 00:00:00
2020-04-21 C130872 00:00:00
2020-04-21 C180040 03:30:00
2020-04-22 C180040 01:00:00
2020-04-23 C180040 02:00:00
2020-04-24 C180040 00:37:00
2020-04-24 00:31:00
2020-04-25 C180040 02:45:00
2020-04-26 00:00:00
2020-04-26 C180040 00:00:00
2020-04-30 C180447 00:00:00
2020-04-30 C180385 00:30:00
2020-04-30 C190225 01:00:00

сгруппируйте по номеру и отобразите дату в виде столбцов и укажите конкретное время, затраченное на это число для этой конкретной даты

клиент нет 1/04/2020 2/04/2020 3/04/2020 ........ 30/4/2020
12345 1:00:00 00:15:00
325245 2:00:00 00:15:00

Что я уже пробовал:

select
			
			date(cu_start_dt_syd) as "Date",
            cu_gen_order_no as Customer_no,
            sec_To_time(sum(time_to_sec(case
				when 
					time(cu_start_dt_syd) > convert('14:30:00',TIME) AND time(cu_end_dt_syd) < convert('22:00:00',TIME)
				then
					timediff(cu_end_dt_syd,cu_start_dt_syd) 
				when
					time(cu_start_dt_syd) <= convert('14:30:00',TIME) and time (cu_end_dt_syd) > convert('14:30:00',TIME)
				then
					time(subtime(cu_end_dt_syd,convert('14:30:00',TIME)))
				when
					time(cu_start_dt_syd) < convert('22:00:00',TIME) and time (cu_end_dt_syd) >= convert('22:00:00',TIME)
				then
					subtime(convert('22:00:00',TIME),time(cu_start_dt_syd))
				else
					0
				end)))  as time_spent 
            
from diary
and cu_start_dt_syd between '2020-03-31' and '2020-05-01' 
group by cu_gen_order_no, date(cu_start_dt_syd)
order by cu_start_dt_syd

1 Ответов

Рейтинг:
0

MadMyche

То, что вы пытаетесь сделать, известно как PIVOT ; который, к сожалению, не является встроенной функцией в MySql. Однако существуют учебные пособия и статьи о том, как реплицировать это в среде MySql (или другой). Существует также настольное приложение под названием dbForge который также может быть использован для выполнения этого запроса.

Рекомендации:
Кодирование Sight => сводных таблиц в MySQL[^]
DevArt => dbForge Studio (графический инструмент MySQL)[^]


Maciej Los

5ed!