mysql行列转_mysql 行列转换

大致的语句就是这样:

set @sql = "";

select @sql := concat(@sql,",max(case when time = """,time,""" then time end)") from (select distinct time from t_time)t;

set @sql = concat("select id",@sql,",date from t_time group by id,date");

prepare stmt from @sql;

execute stmt;

运行结果:

mysql> set @sql = "";

Query OK, 0 rows affected (0.01 sec)

mysql>

mysql> select @sql := concat(@sql,",max(case when time = """,time,""" then time end)") from (select distinct time from t_time)t;

+--+

| @sql := concat(@sql,",max(case when time = """,time,""" then time end)")                                                          |

+--+

| ,max(case when time = "7:00" then time end)                                                                                       |

| ,max(case when time = "7:00" then time end),max(case when time = "8:00" then time end)                                            |

| ,max(case when time = "7:00" then time end),max(case when time = "8:00" then time end),max(case when time = "9:00" then time end) |

+--+

3 rows in set (0.03 sec)

mysql>

mysql> set @sql = concat("select id",@sql,",date from t_time group by id,date");

Query OK, 0 rows affected (0.01 sec)

mysql>

mysql> prepare stmt from @sql;

Query OK, 0 rows affected (0.00 sec)

Statement prepared

mysql>

mysql> execute stmt;

+--+--+--+--+--+

| id   | max(case when time = "7:00" then time end) | max(case when time = "8:00" then time end) | max(case when time = "9:00" then time end) | date     |

+--+--+--+--+--+

|    1 | 7:00                                       | NULL                                       | NULL                                       | 20160104 |

|    1 | 7:00                                       | 8:00                                       | NULL                                       | 20160105 |

|    2 | 7:00                                       | NULL                                       | 9:00                                       | 20160104 |

|    3 | 7:00                                       | 8:00                                       | 9:00                                       | 20160104 |

+--+--+--+--+--+

4 rows in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值