2010-09-16 26 views
0

我有一个表,看起来像这样:如何使用列值的列名在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值?

+1

[MySQL查询行数据动态地转换为列(可能重复http://stackoverflow.com/questions/1599788/mysql-query-to-dynamic-convert-row-data-to-columns) – 2010-09-16 12:46:47

+0

是的,但它需要编写脚本才能构建出你的SQL-Select语句,但是没有MySQL可用来构建这样的模拟交叉表结果集 – DRapp 2010-09-16 12:48:06

+1

您所描述的内容称为移调,交叉制表或旋转。不知道你是否可以用一个SELECT来做到这一点,至少在没有另一种语言的MySQL下为你做一些工作。看看这篇文章的一些想法:http://onlamp.com/pub/a/onlamp/2003/12/04/crosstabs.html – sasfrog 2010-09-16 12:52:57

回答

1

我想你想使用MySQL的sign做到这一点。下面是确实非常相似的东西,你tryign做一个很好的链接:

http://en.wikibooks.org/wiki/MySQL/Pivot_table

+0

虽然我仍然需要知道我在category_id列中有什么值,但此解决方案是很容易用一个小脚本生成SQL SELECT。 – chiborg 2010-09-17 10:19:33