報表產生器同時提供圖形化查詢設計工具和以文字為基礎的查詢設計工具,可協助您建立查詢,以指定要從 Microsoft SQL Server 擷取的數據,以及Microsoft SQL Database 關係資料庫,以及針對報表數據集Microsoft SQL Server 2016 平行處理數據倉儲。 使用圖形化查詢設計工具來探索元數據、以互動方式建置查詢,以及檢視查詢的結果。 使用以文字為基礎的查詢設計工具來檢視形化查詢設計工具所建置的查詢,或修改查詢。 您也可以從檔案或報表匯入現有的查詢。
備註
在報表產生器中,若要指定數據源類型的查詢 Oracle、OLE DB、ODBC 和 Teradata,您必須使用以文字為基礎的查詢設計工具。 如需詳細資訊,請參閱 以文字為基礎的查詢設計工具使用者介面(報表產生器)。
這很重要
使用者在建立和執行查詢時存取數據源。 您應該授與數據源的最小許可權,例如唯讀許可權。
圖形化查詢設計工具
在圖形化查詢設計工具中,您可以探索資料庫數據表和檢視表,以互動方式建置 SQL SELECT 語句,以指定要從中擷取數據集數據的資料庫數據表和數據行。 您可以選擇要包含在資料集中的欄位,並選擇性地指定限制資料集資料的篩選條件。 您可以指定篩選做為參數,並在運行時間提供篩選的值。 如果您選擇多個相關數據表,查詢設計工具會描述兩個數據表集合之間的關聯性。
圖形化查詢設計工具分成三個區域。 根據查詢是否使用數據表/檢視表或預存程式/數據表值函式,查詢設計工具的配置會變更。
備註
SQL Server 2016 平行處理數據倉儲不支援預存程式或數據表值函式。
下圖顯示與數據表或檢視搭配使用的圖形化查詢設計工具。
下圖顯示與預存程式或數據表值函式搭配使用時的圖形化查詢設計工具。
下表描述各窗格的功能。
資料庫檢視
顯示依資料庫架構組織的數據表、檢視、預存程式和數據表值函式的階層式檢視。
選取的欄位
在資料庫檢視窗格中,顯示從選取的項目中獲得的資料庫欄位名稱清單。 這些欄位會成為報表數據集的欄位集合。
函式參數
在 [資料庫檢視] 窗格中顯示預存程式或數據表值函式的輸入參數清單。
人際關係
在 [資料庫檢視] 窗格中,顯示從數據表或檢視表選取字段推斷的關聯性清單,或您手動建立的關聯性。
套用的篩選
在 [資料庫] 檢視中顯示資料表或檢視表的欄位和篩選準則清單。
查詢結果
顯示自動產生查詢結果集的範例數據。
資料庫檢視窗格
[資料庫檢視] 窗格會顯示您有權檢視的資料庫物件的元數據,由數據源連接和認證決定。 階層式檢視會顯示依資料庫架構組織的資料庫物件。 展開每個資料庫綱要的節點,以檢視數據表、檢視、預存程序和表值函數。 展開數據表或檢視以顯示數據行。
選取的欄位窗格
[選取的欄位] 窗格會顯示報表數據集中的欄位,以及要包含在查詢中的群組和匯總。
隨即顯示使用下列選項。
選取的欄位 顯示您為數據表或檢視選取的資料庫欄位,或預存程式或資料表值函式的輸入參數。 在此窗格中顯示的欄位會成為報表數據集的欄位集合。
使用 [報表數據] 窗格來檢視報表數據集的欄位集合。 這些欄位代表檢視報表時,您可以在數據表、圖表和其他報表項目中顯示的數據。
群組和匯總 切換查詢中群組和匯總的使用。 如果您在新增群組和匯總之後關閉群組和匯總功能,則會移除它們。 文字 (none)表示未使用群組和匯總。 如果您再次開啟群組和匯總功能,則會還原先前的群組和匯總。
刪除欄位 刪除選取的欄位。
群組和聚合
查詢具有大型資料表的資料庫可能會返回過多的資料行,這些資料行太多而不利於報表使用,並對負責傳輸大量資料的網路以及處理報表的報表伺服器產生效能影響。 若要限制數據列數目,查詢可以包含匯總資料庫伺服器上數據的SQL 匯總。 SQL 聚合與用戶端聚合不同,這些聚合會在報表被渲染時套用。
聚合提供數據的總結,並且將數據分組以支持提供總結數據的聚合。 當您在查詢中使用匯總時,查詢傳回的其他欄位會自動分組,且查詢包含 SQL GROUP BY 子句。 您可以只使用 [群組] 和 [匯總] 清單中的 [群組依據] 選項來摘要數據,而不加入匯總。 許多彙總都包含使用 DISTINCT 關鍵詞的版本。 包含 DISTINCT 可排除重複的值。
Microsoft SQL Server 使用 Transact-SQL,而且 Microsoft SQL Server 2016 平行處理數據倉儲會使用 SQL。 SQL 語言的兩種方言都支援查詢設計工具提供的 子句、關鍵詞和彙總。
如需 Transact-SQL 的詳細資訊,請參閱《msdn.microsoft.com《SQL Server 在線叢書》中的 Transact-SQL 參考(Database Engine)。
下表列出匯總,並提供它們的簡短描述。
| 聚合 | 說明 |
|---|---|
| 平均 | 傳回群組中值的平均值。 實作 SQL AVG 匯總。 |
| 計數 | 傳回群組中的項目數。 實作 SQL COUNT 匯總。 |
| Count Big | 傳回群組中的項目數。 它是 SQL COUNT_BIG匯總。 COUNT 與 COUNT_BIG 之間的差異在於,COUNT_BIG一律會傳 bigint 回數據類型值。 |
| 最小值 | 傳回群組中的最小值。 實作 SQL MIN 匯總。 |
| 麥克斯 | 傳回群組中的最大值。 實作 SQL MAX 匯總。 |
| StDev | 傳回群組中所有值的統計標準偏差。 實作 SQL STDEV 匯總。 |
| StDevP | 傳回群組指定表達式中所有值的母體統計標準偏差。 實作 SQL STDEVP 匯總。 |
| 總和 | 傳回群組中所有值的總和。 實作 SQL SUM 匯總。 |
| Var | 傳回群組中所有值的統計變異數。 實作 SQL VAR 匯總。 |
| VarP | 傳回群組中所有值的母體統計變異數。 實作 SQL VARP 匯總。 |
| 平均相異值 | 傳回唯一的平均值。 實作 AVG 匯總和 DISTINCT 關鍵詞的組合。 |
| 相異計數 | 傳回不重複的計數。 實作 COUNT 匯總和 DISTINCT 關鍵詞的組合。 |
| 統計大型獨特值 | 傳回群組中項目的唯一計數。 實現 COUNT_BIG 彙總功能與 DISTINCT 關鍵詞的組合。 |
| StDev Distinct | 傳回唯一的統計標準偏差。 實作 STDEV 匯總和 DISTINCT 關鍵詞的組合。 |
| StDevP Distinct | 傳回唯一的統計標準偏差。 實作 STDEVP 匯總和 DISTINCT 關鍵詞的組合。 |
| 唯一值求和 | 傳回唯一的總和。 實作 SUM 彙總和 DISTINCT 關鍵詞的組合。 |
| Var Distinct | 傳回唯一的統計變異數。 實作 VAR 彙總和 DISTINCT 關鍵詞的組合。 |
| VarP Distinct | 傳回唯一的統計變異數。 實作 VARP 匯總和 DISTINCT 關鍵詞的組合。 |
函式參數窗格
[函數參數] 窗格會顯示預存程式或數據表值函式的參數。 顯示下列欄位:
參數名稱 顯示預存程式或數據表值函式所定義的參數名稱。
價值 當查詢執行以擷取數據以在設計時間顯示在 [查詢結果] 窗格中時,要用於 參數的值。 當報表在運行時間執行時,不會使用此值。
關聯性窗格
「關聯性」窗格會顯示資料表的連接關係。 您可以從從資料庫元數據擷取的外鍵關聯性自動偵測關聯性,也可以手動建立關聯性。
隨即顯示使用下列選項。
自動偵測 切換自動偵測功能,以自動建立數據表之間的關聯性。 如果開啟自動偵測,查詢設計工具會從數據表中的外鍵建立關聯性;否則,您必須手動建立關聯性。 當您在 [ 資料庫檢視 ] 窗格中選取數據表時,自動偵測會自動嘗試建立關聯性。 如果您在手動建立聯結之後開啟自動偵測,則會捨棄這些聯結。
這很重要
搭配 SQL Server 2016 平行處理數據倉儲使用時,不會提供建立聯結所需的元數據,而且無法自動偵測關聯性。 如果您的查詢從 SQL Server 2016 平行處理數據倉儲擷取數據,則必須手動建立所有數據表聯結。
新增關聯性 將關聯性加入至 [關聯性 ] 清單。
如果開啟自動偵測,查詢中使用數據行的數據表會自動新增至 [關聯性 ] 清單。 當自動偵測識別兩個數據表相關時,會將一個數據表加入 Left Table 數據行,另一個加入 Right Table 數據行,並在兩者之間建立內部聯結。 每個關聯性都會在查詢中產生 JOIN 子句。 如果數據表不相關,所有數據表都會列在 [左數據表 ] 數據行中,而 [ 聯結類型 ] 數據行表示數據表與其他數據表無關。 開啟自動偵測時,您無法手動新增自動偵測決定不相關的數據表之間的關聯性。
如果自動偵測已關閉,您可以新增和變更數據表之間的關聯性。 按兩下 [編輯欄位 ] 以指定要用來聯結兩個資料表的欄位。
關聯性出現在 關聯性 列表中的順序就是查詢中執行聯結的順序。 您可以在清單中向上和向下移動關聯性,以變更關聯性的順序。
在查詢中使用多個關聯性時,除了第一個關聯性之外,每個關聯性中的其中一個數據表,必須在隨後的關聯性中被參考。
如果上述關聯性參考了關聯性中的這兩個數據表,則關聯性不會產生個別的聯結子句;相反地,聯結條件會加入至針對上述關聯性產生的聯結子句。 聯結類型是由參考相同數據表的上述關聯性所推斷。
編輯欄位 開啟 [ 編輯相關欄位 ] 對話框,您可以在其中新增和修改資料表之間的關聯性。 您選擇要聯結的左右資料表中的欄位。 您可以從左數據表和右數據表聯結多個字段,以在關聯性中指定多個聯結條件。 聯結左右數據表的兩個字段不需要具有相同的名稱。 聯結的欄位必須具有相容的數據類型。
刪除關聯性 刪除選取的關聯性**。**
移動到上方 和 移動到下方 將關聯性清單中的項目移動。 在查詢中放置關聯性的順序可能會影響查詢結果。 關係會按照它們出現在 關係 列表中的順序新增到查詢中。
顯示下列欄位:
左表格 顯示屬於聯結關聯性之第一個數據表的名稱。
聯結類型 顯示自動產生查詢中使用的SQL JOIN 語句類型。 根據預設,如果偵測到外鍵條件約束,則會使用 INNER JOIN。 其他聯結類型可以是 LEFT JOIN 或 RIGHT JOIN。 如果這些聯結類型都不適用,[ 聯結類型 ] 資料行會顯示 [不相關]。 不會為不相關的數據表建立任何 CROSS JOIN 聯結;相反地,您必須藉由聯結左右數據表中的數據行來手動建立關聯性。 如需有關 JOIN 類型的詳細資訊,請參閱《MSDN.MICROSOFT.COM 在線 SQL Server
叢書 》中的。 右表格 顯示聯結關聯性中第二個數據表的名稱。
聯結欄位 列出聯結欄位的配對,如果關聯性有多個聯結條件,聯結欄位的配對會以逗號 (,,) 分隔。
篩選條件面板
[套用篩選] 窗格會顯示用來限制運行時間所擷取之數據列數目的準則。 此窗格中指定的準則可用來產生 SQL WHERE 子句。 當您選取參數選項時,會自動建立報表參數。 以查詢參數為基礎的報表參數可讓使用者指定查詢的值,以控制報表中的數據。
顯示下列欄位:
功能變數名稱 顯示要套用準則的功能變數名稱。
運算符 顯示要在篩選表達式中使用的操作。
價值 顯示篩選表達式中使用的值。
參數 顯示將查詢參數新增至查詢的選項。 使用數據集屬性來檢視查詢參數與報表參數之間的關聯性。
查詢結果窗格
[查詢結果] 窗格顯示的,是由其他窗格中的選擇項目所指定而自動生成的查詢結果。 結果集中的數據行是您在 [選取的欄位] 窗格中指定的欄位,而數據列數據會受限於您在 [套用篩選] 窗格中指定的篩選。 如果查詢包含匯總,結果集就會包含新的匯總數據行。 例如,如果使用 Count 匯總來匯總 數據行 Color ,則查詢結果會包含新的數據行。 根據預設,此數據行會命名 為 Count_Color。
此資料代表您執行查詢時數據來源的值。 數據不會儲存在報表定義 中。處理報表時,會擷取報表中的實際數據。
結果集中的排序順序取決於從數據源擷取數據的順序。 您可以修改查詢,或在擷取報表的數據之後,變更排序順序。
圖形化查詢設計工具工具列
關係型查詢設計工具工具列提供下列按鈕,協助您指定或檢視查詢的結果。
| 按鈕 | 說明 |
|---|---|
| 以文字編輯 | 切換至以文字為基礎的查詢設計工具,以檢視自動產生的查詢或修改查詢。 |
| 匯入 | 從檔案或報表匯入現有的查詢。 支援.sql和 .rdl 的文件類型。 |
| 執行查詢 | 執行查詢。 [查詢結果] 窗格會顯示結果集。 |
了解自動產生的查詢
當您在 [資料庫檢視] 窗格中選取數據表和數據行或預存程式和檢視時,查詢設計工具會從資料庫架構擷取基礎主鍵和外鍵關聯性。 藉由分析這些關聯性,查詢設計工具會偵測兩個數據表之間的關聯性,並將聯結加入至查詢。 接著,您可以新增群組和匯總、新增或變更關聯性,以及新增篩選來修改查詢。 若要檢視查詢文字,該文字顯示從哪些欄擷取資料、資料表之間的聯結,以及任何群組或匯總,請按一下 編輯為文字。
Text-Based 查詢設計工具
若要對查詢進行最充分的控制,請使用以文字為基礎的查詢設計工具。 若要切換至以文字為基礎的查詢設計工具,請在工具列中按兩下 [ 編輯為文字]。 在以文字為基礎的查詢設計工具中編輯查詢之後,就無法再使用關係型查詢設計工具。 然後,查詢一律會在以文字為基礎的查詢設計工具中開啟。 如需詳細資訊,請參閱 以文字為基礎的查詢設計工具使用者介面(報表產生器)。