在mysql中格式化行

在mysql中格式化行,mysql,sql,c#-4.0,Mysql,Sql,C# 4.0,我需要在mySql中格式化数据。表中的原始数据如下所示 我需要的输出如下 对于第二个产品,缺少1行,因此Qty3和百分比3为0 我已尝试使用下面的脚本,但出现错误 SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( ' MAX(IF(pd.Qty = ''', Qty, ''', pd.Percentage, NULL)) AS ', Percentage )

我需要在mySql中格式化数据。表中的原始数据如下所示

我需要的输出如下

对于第二个产品,缺少1行,因此Qty3和百分比3为0

我已尝试使用下面的脚本,但出现错误

    SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      ' MAX(IF(pd.Qty = ''',
      Qty,
      ''', pd.Percentage, NULL)) AS ',
      Percentage
    )
  ) INTO @sql
FROM product;


SET @sql = CONCAT('SELECT pd.GrpId
                    , pd.ProductId, ', @sql, ' 
                   FROM product AS pd
                   WHERE pd.GrpId = ''1011''
                   GROUP BY pd.ProductId');

PREPARE stmt FROM @sql;

EXECUTE stmt;
DEALLOCATE PREPARE stmt;
我犯的错误是
18:50:28从@sql准备stmt错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法,将第2行0.000秒处的“5.00,MAX(IF(pd.Qty='20',pd.Percentage,NULL))用作12.15”,您是否尝试过查看?这被称为一个支点,关于这一点的文章真的有很多,还有很多其他类似的问题:

这将取决于您想要结束的列数(即示例数据中的3个帖子?或者有多少行?)。如果您需要支持未知数量的行,那么您需要一个动态轴心,但同样有很多关于这个的文章/答案


尝试使用谷歌…

是。您有一个语法错误。这是无效的Sql:pd.ProductId、@Sql、'