--我直接运行
SELECT TOP 100 PERCENT D.Name AS StageName, D.Section 
        FROM dbo.PCB_Stage C INNER JOIN dbo.Cfg_DataDictionary D ON C.DictionaryID = D.ID
WHERE PlanningID = '1' 
ORDER BY D.Section asc
--返回的数据是:
/*
StageName             Section
-------------- -------------------
预可           1
初测初勘                  3
初步设计                  4
定测祥勘                  5
施工图设计                6
*/
但是以下的顺序有问题:
SELECT id=IDENTITY(INT, 0, 1), 
        值= ',[' + StageName + ']= [Cost] ' 
INTO   #temp 
FROM   (SELECT TOP 100 PERCENT D.Name AS StageName, D.Section 
        FROM dbo.PCB_Stage C INNER JOIN dbo.Cfg_DataDictionary D ON C.DictionaryID = D.ID
WHERE PlanningID = '1' 
ORDER BY D.Section asc) A 
--获取SQL
DECLARE @sql VARCHAR(8000) 
SET @sql = '' 
SELECT @sql = @sql + isnull(值,'') from #temp 
print(@sql) 
运行后得到的sql是:
,[初测初勘]= [Cost] ,[初步设计]= [Cost] ,[定测祥勘]= [Cost] ,[施工图设计]= [Cost] ,[预可]= [Cost]

解决方案 »

  1.   

    SELECT id=IDENTITY(INT, 0, 1), 
            值= ',[' + StageName + ']= [Cost] ' 
    INTO   #temp 
    FROM   (SELECT    TOP 100 PERCENT D.Name AS StageName, D.Section 
            FROM    dbo.PCB_Stage C INNER JOIN dbo.Cfg_DataDictionary D ON C.DictionaryID = D.ID
            WHERE    PlanningID = '1' 
            ORDER BY D.Section asc) A 改为SELECT id=IDENTITY(INT, 0, 1), 
            值= ',[' + StageName + ']= [Cost] ' 
    INTO   #temp 
    FROM   (SELECT    TOP 100 PERCENT D.Name AS StageName, D.Section 
            FROM    dbo.PCB_Stage C INNER JOIN dbo.Cfg_DataDictionary D ON C.DictionaryID = D.ID
            WHERE    PlanningID = '1' 
            ) A 
    ORDER BY A.Section asc试试
      

  2.   


    我也觉得应该是把ORDER BY A.Section asc
    拿到括号外面来