如何在SQL查询中将两条记录合并为一行?我的数据如下所示:
Name | Address | Address_Type
--------------------------------------
Smith | 123 Main St | P
Smith | PO Box 123 | M我需要得到一个如下所示的结果:
Name | P_Address | M_Address
---------------------------------------
Smith | 123 Main St | PO Box 123发布于 2016-01-28 00:53:52
使用conditional Aggregate可以做到这一点
select Name,
Max(case when Address_Type = 'P' then Address End) as P_Address,
Max(case when Address_Type = 'M' then Address End) as M_Address
From Yourtable
Group by Name发布于 2016-01-28 02:03:45
如果你知道每个人都只有一个"P“地址,而"M”地址永远不会超过一个,那么下面的方法是可行的:
SELECT
P.name,
P.address AS p_address,
M.address AS m_address
FROM
My_Table P
LEFT OUTER JOIN My_Table M ON
M.name = P.name AND
M.address_type = 'M'
WHERE
P.address_type = 'P'如果是这样的话,我还会确保通过数据库约束来实施这些业务规则。
https://stackoverflow.com/questions/35043311
复制相似问题