-1

我有 2 个 SQL Server 表,它们都有数百列。

表 1 的样本是:

ID    ColA   ColC   ColD  ColF ...

表 2 的样本是:

ID    ColB   ColE ...   

我需要加入列 ID,然后按字母顺序打印列。现在我需要按字母顺序排列的列名。我还不关心每一列中的数据。

所以应该是:

ID  ColA  ColB  ColC  ColD  ColE  ColF ...
4

1 回答 1

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)
于 2013-09-24T21:17:37.377 回答