我有 2 个 SQL Server 表,它们都有数百列。
表 1 的样本是:
ID ColA ColC ColD ColF ...
表 2 的样本是:
ID ColB ColE ...
我需要加入列 ID,然后按字母顺序打印列。现在我需要按字母顺序排列的列名。我还不关心每一列中的数据。
所以应该是:
ID ColA ColB ColC ColD ColE ColF ...
我有 2 个 SQL Server 表,它们都有数百列。
表 1 的样本是:
ID ColA ColC ColD ColF ...
表 2 的样本是:
ID ColB ColE ...
我需要加入列 ID,然后按字母顺序打印列。现在我需要按字母顺序排列的列名。我还不关心每一列中的数据。
所以应该是:
ID ColA ColB ColC ColD ColE ColF ...
您可以使用它来帮助构建查询:
SELECT ',' + name
FROM sys.columns
WHERE object_id IN (OBJECT_ID('Table1'),OBJECT_ID('Table2'))
ORDER BY name
更新:动态 SQL 版本(仍然需要手动输入表名):
DECLARE @sql VARCHAR(MAX)
,@cols VARCHAR(MAX)
SET @cols = (SELECT STUFF((SELECT ',' + Name
FROM (SELECT DISTINCT Name
FROM sys.columns
WHERE object_id IN (OBJECT_ID('Table1'),OBJECT_ID('Table2'))
AND Name <> 'ID'
)sub
ORDER BY name
FOR XML PATH('')
), 1, 1, '' ))
SET @sql = 'SELECT ' +@cols+'
FROM Table1 a
JOIN Table2 b
ON a.ID = b.ID
'
EXEC (@sql)