--我直接运行
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]
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]
值= ',[' + 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试试
我也觉得应该是把ORDER BY A.Section asc
拿到括号外面来