sql server列值以逗号分隔转换

时间:2016-11-17 17:14:58

标签: sql sql-server

在此问题被标记为重复之前,我知道它是如何完成的但是没有做声明语句我想在查询本身中执行它

就像我有这个查询

select distinct costcenterid,costcentername,costcenterdesc,contactid,expirationdate,portal_id,
    active,customername,branchid,id from costcenter cc
    inner join branchesinportals bp on bp.portalid = cc.portal_id 

branchidid字段具有不同的值,但所有其他行都具有相同的值,因此,如果我删除它们并执行不同的操作,那么它会有效,我会得到一条记录

我希望它应该始终返回一条记录并将列branchidid组合为逗号分隔值

我试着查看这个似乎有效的链接,但我如何将该链接代码与查询

集成

http://www.codeproject.com/Tips/635166/SQL-Column-Values-as-Comma-Separated-String

1 个答案:

答案 0 :(得分:2)

您可以使用FOR XML来解决此问题。以下是列名列表(您可以在任何SQL Server数据库中运行它):

Select Stuff((
    Select ', ' + cast(COLUMN_NAME as varchar(max))
    From INFORMATION_SCHEMA.COLUMNS
    For XML PATH('')
), 1, 2, '');

以下是如何显示一对多值集:

Select Distinct C1.TABLE_NAME,
    Stuff((
        Select ', ' + Cast(COLUMN_NAME as VarChar (Max))
        From INFORMATION_SCHEMA.COLUMNS C2
        Where C1.TABLE_NAME = C2.TABLE_NAME
        For Xml Path ('')
    ), 1, 2, '') Columns
From INFORMATION_SCHEMA.COLUMNS C1

以下是我的主数据库表和列的输出:

enter image description here