要以逗号分隔的形式转换的 sql server 列值

标签 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

最佳答案

您可以使用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

关于要以逗号分隔的形式转换的 sql server 列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661132/

相关文章:

mysql - mysql中不使用分析函数的RANK函数的性能

javascript - Cassandra 错误: Undefined column name apparently due to case sensitivity despite consistent case in JavaScript

sql-server - 使用 SELECT 语句分配变量

sql-server - Insert Into Table () Values(),() 由于错误部分插入

MySQL INSERT 和 ON DUPLICATE SELECT 可能吗?

mysql - SQL 创建一个带有增量计数器的一列表

sql - "Similar Posts"类似使用 MS SQL Server 的功能?

sql-server - 如何在SSMS单元格中输入 'NULL'?

SQL:喜欢vs包含-不同的结果

php - 插入数据库