我正在尝试创建一个报告,该报告将显示数据库中的不同信息。在我的报告中,我需要显示表job_pieces中的列PieceType。但是每个公司可能具有不同数量的PieceType,例如,公司135仅具有PLT类型,而公司99具有PLT,CASE,CTN等
在我的报告中,我想像列一样显示每个PieceType。因为如果我只在选择中放入jp.PieceType
,则即使可能有5个不同部分,它也只会显示一个值。
喜欢:
PieceType
CTN
但它应该像:
PieceType
CTN CASE PLT
我的SQL查询:
SELECT c.Name,
jn.CompanyID,
COUNT(distinct jn.ID) as Jobs,
SUM(jn.ActualWeight) as GrossWt,
(select COUNT(job_debriefs.ID) from job_debriefs WHERE JobID = jn.JobNo) as Debriefs,
sum(jn.OutTurn) as Outturn,
jp.PieceType
FROM customer c
LEFT JOIN job_Address ja ON c.AccountCode = ja.Code AND c.Company_ID = ja.Company_ID
LEFT JOIN job_new jn ON ja.JobID = jn.ID
LEFT JOIN job_pieces jp ON ja.JobID = jp.ID
WHERE c.Company_ID = ?compID
GROUP BY c.ID
因此,您可以从SQL查询中看到“名称”,“公司ID”,“工作”等列。我希望将零件类型像一列一样显示在行中,因此在Outturn之后,取决于公司,可以是PLT,CASE等。我需要显示每个公司的所有PieceType值,但我不知道每个公司有多少个。现在我的SQL查询只显示一个PieceType
最佳答案
使来自不同行的值成为MySQL中的连接字符串的聚合函数为GROUP_CONCAT。
SELECT c.Name,
...
GROUP_CONCAT(DISTINCT jp.PieceType)
FROM customer c
...
GROUP BY c.ID;
您还可以指定定界符和order by子句。此处更多信息:dev.mysql.com/...function_group-concat。
关于mysql - 在一列中显示数据库中的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31263744/