MSSQL 从多行合成单行的简单操作(mssql 列多行转一行)

把多行合并成单行在数据表中是一个很常见的操作,特别是当我们需要数据更为具体的展示是,使用从多行合成单行的SQL语句就显的格外重要。

在MSSQL数据库中,对于合并多行数据为单行,推荐使用FOR XML PATH子句,通过格式化Xml字符串来实现,简而言之,FOR XML PATH函数会把关联表中的字段值拼接成一个XML字符串,以某种分隔符来区分各个字段,下面给出一个案例:

案例:

从表“Country City”中:

Country City

美国 洛杉矶

美国 旧金山

英国 伦敦

德国 柏林

要求合成类似如下格式的字符串: 美国-洛杉矶,旧金山 英国-伦敦 德国-柏林

SQL语句:

SELECT

Country,

STUFF((SELECT ‘,’ + City

FROM Country_City

WHERE Country = A.Country

FOR XML PATH(”)), 1, 1, ”) AS City

FROM Country_City A

GROUP BY Country

其中,Country_City为数据表名,Country及City为该表中的字段,”,”为分割符,可以自定义,A.Country 用于在WHERE语句中筛选相同的Country,因此可以获得与第一个Country一致的City信息。

返回结果:

Country City

美国 洛杉矶,旧金山

英国 伦敦

德国 柏林

以上就是MSSQL通过从多行合成单行的简单操作,有了这种操作,可以让我们在处理数据的时候更加的方便,更好的去实现我们的需求。


数据运维技术 » MSSQL 从多行合成单行的简单操作(mssql 列多行转一行)