首页 > 解决方案 > 如何在 SQL 中查询多条链接记录以返回一行

问题描述

我有两个这样的表:

Product table                        Identity table


Product | Role  | id                  id | Flag
--------+-------+----                 ---+-----
A       | Phone | 1                    1 |  Y
A       | iPad  | 2                    2 |  Y
A       | PC    | 3                    3 |  N

我想以得到以下结果的方式查询此表(标志为 Y 的所有产品):

Product | Role1  | Role2 
--------+--------+-------------
A       | Phone  | iPad 

请建议如何做到这一点。

标签: sql

解决方案


像这样:

SELECT Product,
 MAX(CASE WHEN Role='Phone' THEN value END) as Role1,
 MAX(CASE WHEN Role='IPad' THEN value END) as Role2,
 MAX(CASE WHEN Role='PC' THEN value END) as Role3
FROM Product
JOIN Identity ON Product.Id = Identity.Id AND Identity.Flag = 'Y'
GROUP BY Product

您可以根据需要向选择列表添加任意数量的角色


推荐阅读