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通过从多行合成单行的简单操作,有了这种操作,可以让我们在处理数据的时候更加的方便,更好的去实现我们的需求。