我有两个SQL Server表,它们都有数百列。
表1的样本是:
ID ColA ColC ColD ColF ...
表2的样本是:
ID ColB ColE ...
我需要加入列ID,然后按字母顺序打印列。现在我需要按字母顺序排列列的名称。我还不关心每一栏中的数据。
所以它应该是:
ID ColA ColB ColC ColD ColE ColF ...
答案 0 :(得分:1)
您可以使用它来帮助构建查询:
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)