我有一个表,其中的值如下
FKTABLE_NAME FKCOLUMN_NAME PKCOLUMN_NAME
table1 column1 column1
table1 column2 column2
table2 column1 column1
table2 column2 column2我需要如何将其转换为
FKTABLE_NAME FKCOLUMN_NAME PKCOLUMN_NAME
tablel1 column1,column2 column1,column2
table12 column1,column2 column1,column2基本上,我尝试按表名对逗号分隔的列进行分组。
谢谢
发布于 2011-02-23 19:27:25
下面是一个关于任何数据库的有效查询
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下面是您的查询
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发布于 2011-02-23 19:13:21
SELECT [Col1Name] + ',' + [Col2Name] + ',' ... + [ColNName]
FROM [tableName]发布于 2011-02-24 00:59:04
与所有字符串聚合问题一样,我建议编写一个自定义聚合(我强烈建议使用clr聚合以获得最佳性能),并编写如下查询
select fktablename, stringAggregate(fkcolumnname), stringAggregate(pkcolumnname)
group by
fktablenamesome tips here
other nice reading
https://stackoverflow.com/questions/5090062
复制相似问题