2015-11-10 81 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

是有道理的。感謝您的迴應。 –