首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列值转换为逗号分隔的行值

如何将列值转换为逗号分隔的行值
EN

Stack Overflow用户
提问于 2011-02-23 19:09:09
回答 4查看 2.7K关注 0票数 0

我有一个表,其中的值如下

代码语言:javascript
运行
复制
FKTABLE_NAME               FKCOLUMN_NAME               PKCOLUMN_NAME
table1                     column1                        column1
table1                     column2                        column2
table2                     column1                        column1
table2                     column2                        column2

我需要如何将其转换为

代码语言:javascript
运行
复制
FKTABLE_NAME               FKCOLUMN_NAME               PKCOLUMN_NAME

tablel1                    column1,column2                column1,column2
table12                    column1,column2                column1,column2

基本上,我尝试按表名对逗号分隔的列进行分组。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-23 19:27:25

下面是一个关于任何数据库的有效查询

代码语言:javascript
运行
复制
select distinct table_name,
  stuff((select ','+data_type
   from information_schema.columns b
   where b.table_name=a.table_name
   for xml path(''),type).value('.[1]','nvarchar(max)'),1,1,'') AS data_types,
  stuff((select ','+column_name
   from information_schema.columns b
   where b.table_name=a.table_name
   for xml path(''),type).value('.[1]','nvarchar(max)'),1,1,'') AS column_names
from information_schema.columns a

下面是您的查询

代码语言:javascript
运行
复制
select distinct FKTABLE_NAME,
  stuff((select ','+FKCOLUMN_NAME
   from tbl b
   where b.FKTABLE_NAME=a.FKTABLE_NAME
   for xml path(''),type).value('.[1]','nvarchar(max)'),1,1,'') AS FKCOLUMN_NAMES,
  stuff((select ','+PKCOLUMN_NAME
   from tbl b
   where b.FKTABLE_NAME=a.FKTABLE_NAME
   for xml path(''),type).value('.[1]','nvarchar(max)'),1,1,'') AS PKCOLUMN_NAMES
from tbl a
票数 3
EN

Stack Overflow用户

发布于 2011-02-23 19:13:21

代码语言:javascript
运行
复制
SELECT [Col1Name] + ',' + [Col2Name] + ',' ... + [ColNName]
FROM [tableName]
票数 0
EN

Stack Overflow用户

发布于 2011-02-24 00:59:04

与所有字符串聚合问题一样,我建议编写一个自定义聚合(我强烈建议使用clr聚合以获得最佳性能),并编写如下查询

代码语言:javascript
运行
复制
select fktablename, stringAggregate(fkcolumnname), stringAggregate(pkcolumnname)
group by 
fktablename

some tips here

other nice reading

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5090062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档