2015-12-03 147 views
0

我想找到一種方法來排序視圖中的結果。我知道Order by命令不起作用。原因是我們正在使用BI工具「Board」鑽取原始數據。不幸的是,由於Where子句是動態的,並且程序總是將它放在查詢的末尾,所以程序沒有辦法像對常規查詢那樣對鑽取進行排序。排序查看SQL Server 2014

因此Order by會出現在Where之前,這會導致錯誤。

任何建議將不勝感激。

感謝, 斯科特

回答

0

所以,有一對夫婦的方式來達到這個目的,一個是爲了確保該視圖中讀取數據已經排序,要做到這一點,您確保在索引表視圖正在讀取的表按照你想要的方式排序,如果這是不可能的,那麼你也可以在視圖本身上創建一個聚集索引並在那裏指定排序順序。

如果創建索引是不可能的,還有另一種方法可以工作,但並不總是理想的,因爲它會在結果集中創建一個沒有任何意義的額外列,您可以這樣做:

SELECT ROW_NUMBER() OVER (ORDER BY [col1] ASC) AS [sort_col] , 
     [col1] , 
     [col2] , 
     [col3] 
FROM [dbo].[table]; 

如果你這樣做,你最終會得到額外的列給出行號,但數據將按[col1]排序。有一件事要提到的是,如果你把它放到視圖定義中,你仍然必須在你的查詢中選擇這個列來進行排序。