首页 > 解决方案 > 在 SQL Server 中使用逗号分隔的 STUFF 函数显示多列

问题描述

我需要在输出中显示一个用逗号分隔的表列(假设 2 列)值

col1    Col2    
================
xyz       abc  
pqr       uvw   

需要的输出:

Col1      Col2
========  =======
xyz,pqr    abc,uvw

我尝试了以下查询,但不确定如何将 col2 包含到以下查询中并将其作为单个查询:

SELECT 
    STUFF((SELECT DISTINCT ',' + CAST(t.Col1 AS VARCHAR(MAX))
           FROM Table_1 t
           FOR XML PATH('')), 1, 1, '')

标签: sql-serversql-server-2014

解决方案


SQL小提琴

MS SQL Server 2017 架构设置

create table MyTable(ColA varchar(max),ColB varchar(max))
INSERT INTO MyTable(ColA,ColB)VALUES('xyz','abc')
INSERT INTO MyTable(ColA,ColB)VALUES('pqr','uvw')

查询 1

SELECT STUFF((select  ',' + cast(t.ColA as varchar(max))
from MyTable t
for xml path ('')
), 1, 1, '') AS ColA,
STUFF((select  ',' + cast(t.ColB as varchar(max))
from MyTable t
for xml path ('')
), 1, 1, '') AS ColB

查询 2

 SELECT 
       STRING_AGG(colA, ',') AS colA,
       STRING_AGG(colB, ',') AS colB
    FROM MyTable

结果

|    ColA |    ColB |
|---------|---------|
| xyz,pqr | abc,uvw |

推荐阅读