2012-04-08 95 views
0

我有一个包含sku编号,attribute_name和属性值的表。每个sku都可能有许多随机的。需要在MySql或Access中将多行组合到一行中

现在表格看起来像这样。

 
SKU,    ATT_NM,           ATT_VAL 
TOST3580, Supply Type,         Toner 
TOST3580, Pre-Consumer Recycled Content Percent [Nom], 0 % 
TOST3580, Post-Consumer Recycled Content Percent [Nom], 0 % 
TOST3580, Total Recycled Content Percent [Nom],   0 % 
TOST3580, OEM/Compatible,         OEM 

我需要他们更像这样。

 
SKU,ATT_NM,ATT_VAL,ATT_NM1,ATT_VAL1 
TOST3580,Supply,Type,Toner,Pre-Consumer Recycled Content Percent,0 % 

添加每个属性值。例如上面的例子会有5个不同的属性。每个SKU具有2-20个属性。任何帮助都是极好的。抱歉格式不正确。

这可以在任一接入完成或MySQL

+1

1)我不太清楚结果。你丢失了数据。 EG:'OEM /兼容'去了哪里? 2)你的意思是你想为每个'sku'添加所有'att_nm'级联? – 2012-04-08 22:44:42

+0

您应该将ATT_NM文本内容移动到另一个表格,然后使用此表中的ATT_ID链接到该表格。 – nnichols 2012-04-08 23:01:38

+0

是的,对于每个SKU,我想将所有ATT_NM和ATT_VAL一起添加到一行中。 – GMattJohnson 2012-04-08 23:30:17

回答

0

你可以尝试这样的事情(与MySQL) -

SELECT 
    SKU, 
    GROUP_CONCAT(IF(ATT_NM = 'Supply Type', ATT_VAL, NULL)) AS `Supply Type`, 
    GROUP_CONCAT(IF(ATT_NM = 'Pre-Consumer Recycled Content Percent [Nom]', ATT_VAL, NULL)) AS `Pre-Consumer Recycled Content Percent [Nom]`, 
    ... 
FROM table 
GROUP BY SKU 

你可以通过检索attribs名单 -

SELECT DISTINCT ATT_NM 
FROM table 

,然后使用返回的值构建prev查询。