繁体   English   中英

将具有相同 id 但不同值的行合并到每个 id 的单行中

[英]Merge rows with same id but different values into single row per id

我有一个按产品 ID 查找类别的查询。 注意:某些产品可以有多个类别。 我当前的查询为不同的类别返回相同的 id

SELECT 
  oc_product.product_id, 
  oc_category_description.name 
FROM 
  oc_product 
  LEFT JOIN oc_product_to_category ON oc_product.product_id = oc_product_to_category.product_id 
  LEFT JOIN oc_category_description ON oc_product_to_category.category_id = oc_category_description.category_id;

结果:

product_id 分类名称
100 贮存
100 固态硬盘
100 硬盘
200 贮存
200 固态硬盘
200 硬盘

我想合并具有相同 product_id 的行,并将每个 category_name 作为额外的列添加到左侧。

所需的 output:

product_id 分类名称 类别名称 2 类别名称 3
100 贮存 固态硬盘 硬盘
200 贮存 固态硬盘 硬盘

SQL 查询的列必须在解析查询时固定。 查询不能 append 更多列,因为它在执行期间发现数据。

您可以使用数据透视表技术,但前提是您知道每个产品的类别数量需要多少列。

我建议您像在第一个示例中那样按行获取结果,然后在客户端应用程序中编写代码以将其格式化为列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM