我用下面的動態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