现有数据格式:1 张三 45 1 09:35:27 09:56:27
2 李四 45 5 11:35:32 11:42:32
3 张三 46 3 08:42:36 08:50:36
5 李四 40 8 06:33:39 06:40:39
6 张三 40 3 13:45:50 13:58:50
8 李四 52 5 10:09:36 10:34:40
9 张三 60 3 10:14:28 10:17:30想要转换为以下数据格式:
张三 45 09:35:27 09:56:27 46 08:42:36 08:50:36 40 13:45:50 13:58:50
李四 45 11:35:32 11:42:32 40 06:33:39 06:40:39 52 10:09:36 10:34:40提供以下mysql测试数据
CREATE TABLE `testd` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`a` varchar(100) DEFAULT NULL,
`b` varchar(100) DEFAULT NULL,
`c` int(4) DEFAULT NULL,
`d` time DEFAULT NULL,
`f` time DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;INSERT INTO `testd` VALUES ('1', '张三', '45', '1', '09:35:27', '09:56:27');
INSERT INTO `testd` VALUES ('2', '李四', '45', '5', '11:35:32', '11:42:32');
INSERT INTO `testd` VALUES ('3', '张三', '46', '3', '08:42:36', '08:50:36');
INSERT INTO `testd` VALUES ('5', '李四', '40', '8', '06:33:39', '06:40:39');
INSERT INTO `testd` VALUES ('6', '张三', '40', '3', '13:45:50', '13:58:50');
INSERT INTO `testd` VALUES ('8', '李四', '52', '5', '10:09:36', '10:34:40');
INSERT INTO `testd` VALUES ('9', '张三', '60', '3', '10:14:28', '10:17:30');
求救各位mysql大神。。
2 李四 45 5 11:35:32 11:42:32
3 张三 46 3 08:42:36 08:50:36
5 李四 40 8 06:33:39 06:40:39
6 张三 40 3 13:45:50 13:58:50
8 李四 52 5 10:09:36 10:34:40
9 张三 60 3 10:14:28 10:17:30想要转换为以下数据格式:
张三 45 09:35:27 09:56:27 46 08:42:36 08:50:36 40 13:45:50 13:58:50
李四 45 11:35:32 11:42:32 40 06:33:39 06:40:39 52 10:09:36 10:34:40提供以下mysql测试数据
CREATE TABLE `testd` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`a` varchar(100) DEFAULT NULL,
`b` varchar(100) DEFAULT NULL,
`c` int(4) DEFAULT NULL,
`d` time DEFAULT NULL,
`f` time DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;INSERT INTO `testd` VALUES ('1', '张三', '45', '1', '09:35:27', '09:56:27');
INSERT INTO `testd` VALUES ('2', '李四', '45', '5', '11:35:32', '11:42:32');
INSERT INTO `testd` VALUES ('3', '张三', '46', '3', '08:42:36', '08:50:36');
INSERT INTO `testd` VALUES ('5', '李四', '40', '8', '06:33:39', '06:40:39');
INSERT INTO `testd` VALUES ('6', '张三', '40', '3', '13:45:50', '13:58:50');
INSERT INTO `testd` VALUES ('8', '李四', '52', '5', '10:09:36', '10:34:40');
INSERT INTO `testd` VALUES ('9', '张三', '60', '3', '10:14:28', '10:17:30');
求救各位mysql大神。。
看看我的回答
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
SET @oid=0;
SET @oflag_a='';
SET @oflag_b='';
CREATE TEMPORARY TABLE temp_1 AS
SELECT @oid:=IF(@oflag_a<>a OR @flag_b<>b,1,@oid+1) AS oid
-- ,@oid:=@oid+1 AS oid
,@oflag_a:=a,@oflag_b:=b
,id,a,b,c,d,f
FROM(
SELECT id,a,b,c,d,f
FROM testd
ORDER BY a,b
) AS outtb SELECT a,MAX(CASE WHEN oid=1 THEN CONCAT(b,' ',d,' ',f) ELSE '' END ) AS col1
,MAX(CASE WHEN oid=2 THEN CONCAT(b,' ',d,' ',f) ELSE '' END ) AS col2
,MAX(CASE WHEN oid=3 THEN CONCAT(b,' ',d,' ',f) ELSE '' END ) AS col3
FROM temp_1
WHERE oid<=3
GROUP BY a