Home > database >  Mysql transfer line column (date)
Mysql transfer line column (date)

Time:09-23

The CREATE TABLE ` tet ` (
` id ` int (10) not NULL AUTO_INCREMENT,
` name ` varchar (40) COLLATE utf8mb4_bin not NULL default ',
Table_size decimal (15, 2) NOT NULL DEFAULT '0.00',
` create_time ` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (` id `),
The KEY ` idx_create_time ` (` create_time `)
) ENGINE=InnoDB AUTO_INCREMENT=0;

Mysql> Select * from tet order by create_time;
+ - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - +
| | id name | table_size | create_time |
+ - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - +
34.00 | | 1 | order_item | 2019-03-01 13:00:04 |
60.00 | | 3 | order_item | 2019-03-15 13:00:04 |
54.00 | | 2 | order_item | 2019-03-30 13:00:04 |
+ - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - +

Want to change to:

Name the 2019-03-01 13:00:04 2019-03-01 13:00:04 13:00:04 2019-03-30
Order_item 34.00 60.00 54.00


To ask how to write SQL?

CodePudding user response:

The SELECT t.n ame, MAX (IF (r=1, t.t able_size, NULL)), MAX (IF (r=2, t.t able_size, NULL)), MAX (IF (r=3, t.t able_size, NULL)) FROM (
SELECT t. *, @ : R=@ R + R FROM 1 (
SELECT t. *, @ R:=0 FROM tet t ORDER BY DATE_FORMAT (tc reate_time, '% % Y - m - H: % d % % s: % I ")
) t) t GROUP BY t.n ame

CodePudding user response:

reference 1st floor AHUA1001 response:
SELECT t.n ame, MAX (IF (r=1, t.t able_size, NULL)), MAX (IF (r=2, t.t able_size, NULL)), MAX (IF (r=3, t.t able_size, NULL)) FROM (
SELECT t. *, @ : R=@ R + R FROM 1 (
SELECT t. *, @ R:=0 FROM tet t ORDER BY DATE_FORMAT (tc reate_time, '% % Y - m - H: % d % % s: % I ")
) t) t GROUP BY t.n ame


-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Thank you very much, insert after three other data problems
Insert into tet (name, table_size, create_time) values (' cust_list, 10.00, 'the 2019-03-15 13:00:04');
Insert into tet (name, table_size, create_time) values (' cust_list, 5.00, 'the 2019-03-01 13:00:04');
Insert into tet (name, table_size, create_time) values (' cust_list, 30.00, 'the 2019-03-30 13:00:04');

Mysql> SELECT t.n ame, MAX (IF (r=1, t.t able_size, NULL)), MAX (IF (r=2, t.t able_size, NULL)), MAX (IF (r=3, t.t able_size, NULL)) FROM (SELECT t. *, @ r:=@ r + r FROM 1 (SELECT t. *, @ r:=0 FROM tet t ORDER BY DATE_FORMAT (tc reate_time, '% % Y - m - H: % d % % s: % I ")) t) t GROUP BY t.n ame.
+ -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
| name | MAX (IF (r=1, t.t able_size, NULL)) | MAX (IF (r=2, t.t able_size, NULL)) | MAX (IF (r=3, t.t able_size, NULL)) |
+ -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
5.00 | | cust_list | NULL | NULL |
| order_item | | NULL | | 60.00 34.00
+ -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +

CodePudding user response:

Since this not line, that is the simple and crude,
The SELECT t.n ame,
(SELECT tt. Table_size FROM tet WHERE tt tt. Name=t.n ame ORDER BY tt, create_time LIMIT 1) table_size_1,
(SELECT tt. Table_size FROM tet WHERE tt tt. Name=t.n ame ORDER BY tt, create_time LIMIT 1, 1) table_size_2,
(SELECT tt. Table_size FROM tet WHERE tt tt. Name=t.n ame ORDER BY tt, create_time LIMIT 2, 1) table_size_3
The FROM tet t GROUP BY t.n ame;
  • Related