我用下面的动态SQL脚本将表转换像
如何在动态SQL脚本中使用稀疏列
(1,ATTRIBUTENAME1,Attributevalue1)
(1,ATTRIBUTENAME2,Attributevalue2)
(2,AttributeName1,Attributevalue1)
(2,AttributeName2,Attributevalue2)
。
。
。
(11113,ATTRIBUTENAME2,Attributevalue2)
到一个表到下面格式
(数据点,ATTRIBUTENAME1,ATTRIBUTENAME2,............. AttributeNamen )
(1,AttributeValue1,AttributeValue2,.........................)
(2,AttributeValue1,AttributeValue2,..... ....................)
。
。
。
(11113,AttributeValue1,AttributeValue2,.........................)
======== ======动态SQL脚本================
SET @sql = NULL;<br/>
SELECT<br/>
GROUP_CONCAT(DISTINCT<br/>
CONCAT(<br/>
'max(CASE WHEN AttributeName = ''',<br/>
AttributeName,<br/>
''' THEN AttributeValue END) AS `',
AttributeName, '`'<br/>
)<br/>
) INTO @sql<br/>
FROM yourtable;<br/>
<br/>
SET @sql <br/>
= CONCAT('SELECT datapoint, ', @sql, ' <br/>
from yourtable<br/>
group by datapoint');<br/>
PREPARE stmt FROM @sql;<br/>
EXECUTE stmt;<br/>
DEALLOCATE PREPARE stmt;<br/>
问题:我跑出来的列数SQL的limit.I知道我必须使用SPARSE列(因为我的表有很多NULL值)。
任何想法如何为上述SQL脚本中的SPARSE列?
@bluefeet你可以看看这个吗? – 2013-04-23 20:26:12
为什么不使用属性名称作为元数据表中的记录,并在值表中使用该键? – 2013-06-01 09:44:42