在mysql中格式化行
我需要在mySql中格式化数据。表中的原始数据如下所示 我需要的输出如下 对于第二个产品,缺少1行,因此Qty3和百分比3为0 我已尝试使用下面的脚本,但出现错误在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 )
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、'