我有一张像
TABLEX
-
+------+------------+
| NAME | TABLE_NAME |
+------+------------+
| X1 | X001 |
| X2 | X002 |
+------+------------+
该表包含一个 name 列,它只是描述和一个 table_name 列,它实际上是一个已经存在于数据库中的表。
X001
表格有类似的列X1_A, X1_B
X002
表格有类似的列X2_A, X2_B
现在我想以TABLE_NAME
逗号分隔的字符串连接列中存在的实际表中的所有列,并将其显示为一列。
+------+------------+------------+
| NAME | TABLE_NAME | COLUMNS |
+------+------------+------------+
| X1 | X001 | X1_A, X1_B |
| X2 | X002 | X2_A, X2_B |
+------+------------+------------+
现在可以使用 CTE 来实现。我已经使用STUFF
with成功创建了查询XML PATH
,但是我遇到了性能问题,因为我上面显示的表中有 200 奇数行,并且每个链接的后续表都有 100 列。
编辑 -
SELECT
P.NAME,
P.TABLE_NAME,
[COLUMNS]=(SELECT STUFF((SELECT ',' + NAME FROM sys.syscolumns WHERE ID = OBJECT_ID(P.TABLE_NAME) ORDER BY colorder FOR XML PATH('') ), 1, 1,''))
FROM TABLEX P
TABLEX
上面张贴的表格在哪里。