需要将MySql或Access中的多行组合成一行

时间:2012-04-08 22:26:00

标签: mysql ms-access ms-access-2007

我有一个包含sku编号,attribute_name和属性值的表。每个sku都可能有许多讽刺。

现在桌子看起来像这样。

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个属性。任何帮助都是极好的。抱歉格式不正确。

这可以在Access或MySQL中完成

1 个答案:

答案 0 :(得分: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

您可以使用 -

检索属性列表
SELECT DISTINCT ATT_NM
FROM table

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