1

我在Report Builder 3.0中用SQL查詢創建了一個數據集。我沒有在查詢中指定order by,而是使用union all以我想要的順序堆疊結果。該數據集中的第一列稱爲Product在SQL Server 2008 Report Builder 3.0中重寫排序?

當我在Report Builder中創建一個表格,引用Product列時,無論出於何種原因,它都會默認按字母順序排序此列 - 我不想這樣做。

我該怎麼辦? Report Builder 3.0看起來很原始,所以如果沒有什麼我可以做這件事的煩惱比做到這一點。

回答

0

我沒有通過在 查詢中指定的順序,而是使用UNION ALL來 堆在我 想要的順序排列結果。

如果沒有明確的ORDER BY子句,則返回的訂單行將是不確定的。它可以 - 也常常 - 隨着執行環境的變化從一次運行變爲另一次運行。如果您未指定ORDER BY,則查詢優化程序可以按照它認爲最有效的順序自由返回行。你不能依靠它來每次做出相同的選擇。

也許報表生成器將在基礎查詢中遵守明確的ORDER BY

1

@Catcall對結果集是'未定義'是絕對正確的。不過,我認爲您看到按第一列排序的結果的原因可能是因爲您使用了報表構建器嚮導來創建輸出表。這往往會創建一堆嵌套的行組,並可能首先在產品上進行分組,然後對產品進行排序。

如果您創建一個新表並將行保留爲「詳細信息」行(它將顯示爲等號而不是括號/大括號),那麼通常報表生成器將按查詢返回的順序輸出。

但是,它是明確定義排序順序的最佳實踐,我會用RANK()或類似的每個查詢中,給你一個數字SortOrder列。然後在Report Builder中使用它作爲Sort表達式。

1

嘗試刪除行組中的排序選項。 (組屬性/排序)。

接下來,在tablix屬性中添加一個新的排序。 https://msdn.microsoft.com/en-us/library/dd255193.aspx

+1

當提供主要來自鏈接的答案時,請在鏈接頁面中包含相關文本,以便在未來某個時間鏈接無效時爲您的答案增加價值。 – 2015-04-07 21:48:08

相關問題