【发布时间】:2015-07-07 11:21:25
【问题描述】:
我有一个 SQL 查询,它显示来自数据库中不同表的信息。其中一个字段称为 PieceType,其中包含 PLT、CASE、CTN 等值。每个公司可能有不同数量的 PieceType,例如公司 4 可能只有 PLT,但公司 5 可能有 10 种不同的类型。我想在单独的列中显示这些类型,例如:
Plt | CASE | CTN
我的 SQL 查询:
SELECT c.Name,
jp.PieceType
FROM customer c
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
现在查询只显示 PieceTypes 中的一个值,即使该公司可能有多种工件类型。我尝试了GROUP_CONCAT(DISTINCT jp.PieceType),但它显示了同一列中的所有值。我需要每个部分都在一个单独的列中。
示例数据库可以在 sqlfiddle 上找到:http://www.sqlfiddle.com/#!9/c34306/3
【问题讨论】:
-
我真的不明白为什么你想要不同的列,你可以用 case 语句来代替你所拥有的每种类型,假设你有有限的 set 。选择 c.name,当 jp.PieceType='Plt' 然后 'Plt' 以 Plt 结尾时的情况,当 jp.PieceType='CASE' 然后 'CASE' 以 'CASE' 结尾时...
-
@BhargavSarvepalli 如果它们是分开的,它将有助于显示我需要的报告,因为使用一列不能正确显示它们。我不能为每件作品创建一个案例,就像我说一家公司只能有一个,而另一家可以有 30 个
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
有没有办法只拆分值?就像我说的,如果我使用
GROUP_CONCAT(DISTINCT jp.PieceType),值将显示为 CTN、FP、CASE。是否可以将每个值拆分为单独的列?
标签: mysql sql mysql-workbench multiple-columns