我有一个SQL查询来显示有关公司的信息。其中一列叫做PieceType,一家公司可以有很多种类型,每种类型都有数量。所以我想要将每件作品的类型显示为一列,然后显示其中的数量。所以每种类型都有自己的专栏。数据透视表错误
因此,这将是这样的:
我已经在这里创造的样本数据库:http://www.sqlfiddle.com/#!9/13230/4
SET group_concat_max_len=4294967294;
SET @COLUMNS = NULL;
/* Build columns to pivot */
SELECT GROUP_CONCAT(
DISTINCT CONCAT(
'CASE WHEN jp.PieceType = "',
jp.PieceType ,
'" THEN 1 ELSE NULL END AS ',
jp.PieceType
)
) INTO @COLUMNS
FROM job_pieces jp;
/* Build full query */
SET @SQL = CONCAT(
'SELECT
c.Name,
',@COLUMNS'
FROM customer c
LEFT JOIN job_new jn ON c.JobID = jn.ID
LEFT JOIN job_pieces jp ON c.JobID = jp.JobID
WHERE c.Company_ID = 123
GROUP BY c.ID'
);
/* Prepare and execute the query*/
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但是当我运行查询,我得到这个错误:
Incorrect parameters in the call to native function 'CONCAT'