2013-09-24 40 views
-1

我有2个SQL Server表,它们都有数百列。按列名排序2个表

表1的样品是:

ID ColA ColC ColD ColF ... 

表2的样品是:

ID ColB ColE ... 

我需要加入在柱上ID但随后有列打印出按字母顺序排列。现在我需要按字母顺序排列这些列的名称。我不关心每列中的数据。

所以它应该是:

ID ColA ColB ColC ColD ColE ColF ... 
+1

这没关系,不是你的电话 – cdub

+0

什么是-1的 – cdub

回答

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 ' [email protected]+' 
      FROM Table1 a 
      JOIN Table2 b 
       ON a.ID = b.ID 
      ' 
EXEC (@sql)