时间:2021-07-01 10:21:17 帮助过:7人阅读
这个用到存储过程的,不然应该实现不了,除非你知道有几个地区,比如你就上海跟山东这2个地区,那可以用一句弄出来!
看看其他大神有没有好的方法!
CREATE TABLE `mytable` ( id int, 时间 varchar(4), 地区 varchar(50), 价格 decimal);insert into mytable select 1,'2001','上海', 5union allselect 2,'2001','上海', 5 union allselect 2,'2001','山东', 6union allselect 3,'2002','上海', 8 union allselect 4,'2002','山东', 9union allselect 7,'2003','山东', 10union allselect 8,'2003','上海', null;select * from mytable;select 时间,( case 地区 when '上海' then 价格 else null end) as '上海',( case 地区 when '山东' then 价格 else null end) as '山东'from mytablegroup by 时间;
$rs = mysql_query('select * from tbl_name');while($r = mysql_fetch_assoc($rs)) { $res[$r['时间']][$r['地区']] = $r['价格'];}$t = array_keys(current($res));echo "\t" . join("\t", $t) . "\n";foreach($res as $k=>$r) { echo $k; foreach($t as $v) echo "\t{$r[$v]} "; echo "\n";
上海 山东2001 5 6 2002 8 9 2003 10
CREATE TABLE `mytable` ( id int, 时间 varchar(4), 地区 varchar(50), 价格 decimal);insert into mytable select 1,'2001','上海', 5union allselect 2,'2001','上海', 5 union allselect 2,'2001','山东', 6union allselect 3,'2002','上海', 8 union allselect 4,'2002','山东', 9union allselect 7,'2003','山东', 10union allselect 8,'2003','上海', null;select * from mytable;select 时间,( case 地区 when '上海' then 价格 else null end) as '上海',( case 地区 when '山东' then 价格 else null end) as '山东'from mytablegroup by 时间;
参考这个帖子第4种方法 http://www.cnblogs.com/lhj588/archive/2012/06/15/2550392.html
楼上的方法都不错,学习了