Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要转换为逗号分隔的sql server列值_Sql_Sql Server - Fatal编程技术网

要转换为逗号分隔的sql server列值

要转换为逗号分隔的sql server列值,sql,sql-server,Sql,Sql Server,在这个问题被标记为重复之前,我知道如何完成它,但是如果不执行declare语句,我希望在查询本身中完成它 好像我有这个疑问 select distinct costcenterid,costcentername,costcenterdesc,contactid,expirationdate,portal_id, active,customername,branchid,id from costcenter cc inner join branchesinportals bp on

在这个问题被标记为重复之前,我知道如何完成它,但是如果不执行declare语句,我希望在查询本身中完成它

好像我有这个疑问

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 
branchid
id
字段有不同的值,但所有其他行都有相同的值,因此如果我删除这些值并执行不同的操作,效果会很好,我会得到一条记录

我希望它总是返回一条记录,并将
branchid
id
列组合为逗号分隔值

我试图寻找一个这个链接,这似乎是工作,但我如何才能集成该链接代码与查询


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

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

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
以下是我的主数据库表和列的输出:


明智的做法是选择
(…对于XML路径(“”),键入).value(“[1]”,'VARCHAR(MAX)
),以避免最后一个字符串中的
符号少于(
)。这在这里不太可能,但你永远不知道。但我想让它集成到查询本身中,我如何做到这一点,我们必须在结果集中识别唯一的键列(或组合),以及我们如何做到这一点
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