我有一个表,看起来像这样:如何使用列值的列名在MySQL
|date |category_id|val
|2010-08-09|1 |2
|2010-08-09|2 |45
|2010-08-10|3 |1500
|2010-08-10|2 |4
我想从该表中选择,每个类别的ID是那么最终的结果列看起来是这样的:
|date |1 |2 |3
|2010-08-09|2 |45 |NULL
|2010-08-10|NULL |4 |1500
是像这可能与一个SELECT
语句或存储过程,而无需使用额外的表和事先不知道所有CATEGORY_ID值?
[MySQL查询行数据动态地转换为列(可能重复http://stackoverflow.com/questions/1599788/mysql-query-to-dynamic-convert-row-data-to-columns) – 2010-09-16 12:46:47
是的,但它需要编写脚本才能构建出你的SQL-Select语句,但是没有MySQL可用来构建这样的模拟交叉表结果集 – DRapp 2010-09-16 12:48:06
您所描述的内容称为移调,交叉制表或旋转。不知道你是否可以用一个SELECT来做到这一点,至少在没有另一种语言的MySQL下为你做一些工作。看看这篇文章的一些想法:http://onlamp.com/pub/a/onlamp/2003/12/04/crosstabs.html – sasfrog 2010-09-16 12:52:57