2015-11-10 78 views
0

我有以下UNPIVOT代码,我想通过FactSheetSummary列来订购吧,这样,当它被转换为行是为了1 - 12:如何订购UNPIVOT

INSERT INTO #Results 
SELECT DISTINCT ReportingDate, PortfolioID,ISIN, PortfolioNme, Section,REPLACE(REPLACE(Risks,'‘',''''),'’','''') 
FROM 
(SELECT DISTINCT 
      ReportingDate 
     , PortfolioID 
     , ISIN 
     , PortfolioNme 
     , Section 
     , FactSheetSummary_1, FactSheetSummary_2, FactSheetSummary_3 
     , FactSheetSummary_4, FactSheetSummary_5, FactSheetSummary_6 
     , FactSheetSummary_7, FactSheetSummary_8, FactSheetSummary_9 
     , FactSheetSummary_10, FactSheetSummary_11, FactSheetSummary_12 
    FROM #WorkingTableFactsheet) p 
UNPIVOT 
(Risks FOR FactsheetSummary IN 
    ( FactSheetSummary_1, FactSheetSummary_2, FactSheetSummary_3 
     , FactSheetSummary_4, FactSheetSummary_5, FactSheetSummary_6 
     , FactSheetSummary_7, FactSheetSummary_8, FactSheetSummary_9 
     , FactSheetSummary_10, FactSheetSummary_11, FactSheetSummary_12) 
)AS unpvt; 

--DELETE records where there are no Risk Narratives 
DELETE FROM #Results 
WHERE Risks = '' 

SELECT 
ReportingDate 
, PortfolioID 
, ISIN 
, PortfolioNme 
, Section 
, Risks 
, ROW_NUMBER() OVER(PARTITION BY ISIN,Section ORDER BY ISIN,Section,Risks) as SortOrder 
FROM #Results 
order by ISIN, Risks 

是否有可能做这个?我认为UNPIVOT的IN会决定命令?我是否需要添加一列来指定我想要从1到12?

回答

1

只需使用情况下表达顺序:

order by case FactsheetSummary 
      when 'FactSheetSummary_1' then 1 
      when 'FactSheetSummary_2' then 2 
      when 'FactSheetSummary_12' then 12 end 
+0

是有道理的。感谢您的回应。 –