私は次のようなテーブルを持っています
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
上記の表はどこにありますか。