我有3对进/出员工记录现有代码.. 但是从我的表中我需要在每个输入上的注释在一个单元格中以逗号分隔。
请看我的小提琴.. http://sqlfiddle.com/#!2/afe72/1/0
我的桌子会是这样的..
create table overallrec(
td_id int auto_increment primary key,
emp_id int,
status varchar(3),
timestamp datetime,
remarks varchar(255)
);
insert into overallrec(emp_id,status,timestamp) values
( 35, 'in' , '2013-12-19 10:15:09', 'late'),
( 35, 'out', '2013-12-19 12:00:23', 'example'),
( 35, 'in' , '2013-12-19 13:00:23'),
( 35, 'out', '2013-12-19 16:01:47'),
( 35, 'in' , '2013-12-19 18:01:17'),
( 35, 'out', '2013-12-19 22:01:07'),
( 35, 'in' , '2013-12-20 10:00:12'),
( 36, 'in' , '2013-12-18 10:15:09'),
( 36, 'out', '2013-12-18 12:00:23'),
( 37, 'in' , '2013-12-17 10:15:09'),
( 37, 'out', '2013-12-17 12:00:23'),
( 37, 'in' , '2013-12-17 13:00:23');
我希望它在每行末尾都有逗号分隔的字符串。 像这样(参考我小提琴的第一行):
35 in December, 19 2013 10:15:09+0000
out December, 19 2013 12:00:23+0000
in December, 19 2013 13:00:23+0000
out December, 19 2013 16:01:47+0000
in December, 19 2013 18:01:17+0000
out December, 19 2013 22:01:07+0000 late, example
请帮助我..我希望得到一个答案作为圣诞礼物..:/
答案 0 :(得分:0)
GROUP_CONCAT可能会为您提供所需的信息。
尝试此查询,为每位员工每天提供一个结果集行。
SELECT emp_id,
GROUP_CONCAT(CONCAT(status, ' ', timestamp)) AS log,
GROUP_CONCAT(remarks) AS remarks
FROM overallrec
GROUP BY emp_id, DATE_FORMAT(timestamp,'%Y-%m-%d')
ORDER BY DATE_FORMAT(timestamp,'%Y-%m-%d'), emp_id
我没有像你那样格式化你的时间戳,但除此之外,我认为这很接近。这是一个小提琴。 http://sqlfiddle.com/#!2/d7755/5/0
答案 1 :(得分:0)
好吧,但你不能轻易地保持这个http://sqlfiddle.com/#!2/c16169/2/0