建立查詢是建立自訂報表的第一個步驟。以下提供三種建立查詢的方法:
若要建立查詢,請執行下列動作:
在類型中,選取下列其中一個類型:
參數查詢
「參數查詢」類型用來呈現選項清單,供您指定此參數的值。「參數查詢」可讓您在填入「報表查詢」的參數值時呈現選項清單,該選項清單不是已定義的簡單「屬性」,而是需要您來定義的複雜查詢。
如需如何為報表選取參數查詢的範例,請參閱為報表新增參數查詢。
報表查詢
選取要包含在報表中的記錄。如果您設計的報表將包含參數,您可以將報表設計成不顯示任何記錄或顯示所有記錄。
針對調節相容性,您可以套用安全性篩選,如此使用者便只能夠查看根據本身的角色而被授予權限的資料以及指派給他們的調節。若要將「安全性篩選條件」套用至報表查詢,請將下列語法新增至查詢 WHERE CLAUSE 陳述式的尾端:
調節相容性:$ARM_SECURITY_CLAUSE$
WHERE $ARM_SECURITY_CLAUSE$ AND ReconciliationEO
當在查詢中使用 $ARM_SECURITY_CLAUSE$
時,ARM_RECONCILIATIONS
的別名必須是 ReconciliationEO
。
註:
由於 Account Reconciliation 包含的許多預先定義查詢都已套用「安全性篩選」,因此您在建立自己的查詢時,可以把這些預先定義的查詢當做範例。
如需查詢範例,請參閱下方的調節相容性範例。
按一下產生查詢以產生報表查詢。請參閱下面的產生查詢以取得詳細資料。
在您提供所需的詳細資料並關閉「產生查詢」對話方塊之後,產生的報表查詢會顯示在查詢中。
註:
如果報表中需要參數,請將參數新增到報表查詢 SQL。參數名稱可以是任何名稱,但必須以波狀符號 (~) 括住。請參閱後續章節中的範例。執行下列其中一項動作:
按一下驗證以測試查詢是否有錯誤。
按一下驗證並解釋計畫以測試查詢是否有錯誤,並產生將用來執行此查詢的計畫。產生的計畫會儲存在與查詢相同名稱的 .txt
檔案中。您可以檢視或下載產生的計畫。
產生的計畫包含用來執行查詢的一組步驟。使用該計畫識別可能造成查詢效能欠佳的問題。之後您可以調整查詢以提高其效能。
註:
依預設,產生執行計畫僅可用於 OCI (Gen 2) 環境。若要為典型環境啟用此功能,請使用服務要求聯絡 Oracle。若要利用 BI Publisher 從查詢產生範例 XML 檔案以做為範本,請按一下產生範例 XML。
註:
您可以輕鬆地刪除查詢,或使用「動作」功能表複製查詢。產生查詢
「產生查詢」對話方塊可讓您選取產品中任何現有的屬性作為查詢以及/或者篩選的依據,以協助您對資料庫建立查詢。該對話方塊接著產生可配對指定的屬性與篩選條件的 SQL,您可以在此時加以修改或增強。
若要產生報表查詢,請執行下列動作:
在「模組」中,選取調節管理程式或交易配對。
在「查詢」中,選取查詢類型。
如果您在「模組」中選取調節管理程式,請選取下列其中一個選項:調節、設定檔或交易。
如果您在「模組」中選取交易配對,請從下拉清單所列的查詢中選取查詢。
選取套用安全性以套用安全性篩選,如此使用者便只能夠查看根據本身的角色而被授予權限的資料以及指派給他們的調節。
註:
當您選取查詢底下的「配對類型」時,不會顯示套用安全性選項。選取您要在查詢中包含的欄,然後按下一步。
註:
交易配對支援自動產生交易查詢。註:
對於交易配對,即使未從「可用」欄清單選取「科目 ID」欄,產生的查詢中也會包含此欄。若要從報表排除「科目 ID」欄,請從所產生查詢的 SELECT 清單移除「科目 ID」欄。為報表新增參數查詢
如何為報表新增參數查詢:
選取查詢,然後選取某個參數查詢類型 (例如 CurrencyList)。
在「編輯查詢」對話方塊中,複查及/或編輯參數查詢,然後按一下儲存並關閉。
此時您會返回「報表組態」畫面。
選取報表,然後選取您想要用的報表 (例如餘額 - 依調節)。
在「編輯報表」對話方塊中,選取參數。
針對您要使用的參數代碼,選取參數類型下拉清單中的查詢,然後選取屬性/查詢下拉清單中的CurrencyList。
參數值下拉清單會顯示一系列的幣別。
註:
只有在您選取參數類型下拉清單中的查詢時,屬性/查詢下拉清單才會顯示參數查詢清單。註:
參數類型下拉清單可讓您挑選所有這些模組的模組屬性 (調節管理程式或交易配對)。如果針對「參數類型」選擇模組屬性,則「屬性/查詢」下拉清單將會顯示模組屬性清單。按一下儲存和關閉。
調節相容性範例
這些調節相容性範例假設您要執行顯示包含「每月」頻率之期間清單的報表。如果您設計的報表將包含參數,您可以將報表設計成不顯示任何記錄或顯示所有記錄。
參數查詢:從 arm_frequencies 選取 frequency_id、frequency_name
報表查詢,選項 1:(如果使用者未提供頻率值則不傳回任何期間):
Select p.period_name from arm_periods p, arm_period_frequencies pf where p.period_id = pf.period_id and pf.frequency_id = ~FREQUENCY~
報表查詢選項 2:(如果使用者未提供頻率值則傳回所有期間):
Select p.period_name from arm_periods p, arm_period_frequencies pf where p.period_id = pf.period_id and pf.frequency_id = coalesce(~FREQUENCY~,pf.frequency_id)
註:
參數名稱可以是任何名稱,但必須以波狀符號 (~) 括住。
在第二個選項中,coalesce()
函數會傳回清單中的第一個非空值;因此,如果 FREQUENCY 為空值,則會傳回 pf.frequency_id
,在該情況下,該條件將一律為 true (pf.frequency_id = pf.frequency_id
),因而導致傳回所有記錄。
交易配對範例
這些範例假設您要查看任何指定調節類型的調節清單。
參數查詢:SELECT TM_RECON_TYPE.TEXT_ID AS RECONCILIATION_TYPE_ID , (TM_RECON_TYPE.NAME || ' (' || TM_RECON_TYPE.TEXT_ID || ')') AS RECONCILIATION_TYPE_NAME FROM TM_RECON_TYPE TM_RECON_TYPE
報表查詢,選項 1:(如果使用者未選取調節類型,則不會傳回調節):
SELECT TM_RECON.TEXT_ID AS RECONCILIATION_ID,TM_RECON.NAME AS RECONCILIATION_NAME, TM_RECON_TYPE.TEXT_ID AS RECONCILIATION_TYPE_ID, TM_RECON_TYPE.NAME AS RECONCILIATION_TYPE_NAME, NVL ((SELECT P_FCM_USERS.USER_NAME FROM FCM_USERS_V P_FCM_USERS WHERE TM_RECON.PREPARER = P_FCM_USERS.USER_ID ), TM_RECON.PREPARER ) AS PREPARER, TM_RECON.DESCRIPTION DESCRIPTION FROM TM_RECON TM_RECON, TM_RECON_TYPE TM_RECON_TYPE WHERE TM_RECON.RECON_TYPE_ID = TM_RECON_TYPE.RECON_TYPE_ID AND (TM_RECON_TYPE.TEXT_ID = '~RECONCILIATION_TYPE_ID~')
報表查詢,選項 2:(如果使用者未選取任何調節類型,則傳回所有調節。):
SELECT TM_RECON.TEXT_ID AS RECONCILIATION_ID,TM_RECON.NAME AS RECONCILIATION_NAME, TM_RECON_TYPE.TEXT_ID AS RECONCILIATION_TYPE_ID, TM_RECON_TYPE.NAME AS RECONCILIATION_TYPE_NAME, NVL ((SELECT P_FCM_USERS.USER_NAME FROM FCM_USERS_V P_FCM_USERS WHERE TM_RECON.PREPARER = P_FCM_USERS.USER_ID ), TM_RECON.PREPARER ) AS PREPARER, TM_RECON.DESCRIPTION DESCRIPTION FROM TM_RECON TM_RECON, TM_RECON_TYPE TM_RECON_TYPE WHERE TM_RECON.RECON_TYPE_ID = TM_RECON_TYPE.RECON_TYPE_ID AND COALESCE('~RECONCILIATION_TYPE_ID~',TM_RECON_TYPE.TEXT_ID)
註:
參數名稱可以是任何名稱,但必須以波狀符號 (~) 括住。
在第二個選項中,coalesce()
函數傳回清單中的第一個非空值;因此,如果 RECONCILIATION_TYPE_ID 為空值,則會傳回 TM_RECON_TYPE.TEXT_ID
,而且如果是那樣,條件將一律為真 ((TM_RECON_TYPE.TEXT_ID = TM_RECON_TYPE.TEXT_ID)
,導致傳回所有記錄。
報表查詢,選項 3 (如果使用者具有存取權,則傳回所有調節):SELECT TM_RECON.TEXT_ID AS RECONCILIATION_ID, TM_RECON.NAME AS RECONCILIATION_NAME, TM_RECON_TYPE.TEXT_ID AS RECONCILIATION_TYPE_ID, TM_RECON_TYPE.NAME AS RECONCILIATION_TYPE_NAME, TM_RECON.DESCRIPTION DESCRIPTION FROM TM_RECON TM_RECON, TM_RECON_TYPE TM_RECON_TYPE, ARM_RECONCILIATIONS ProfileEO WHERE TM_RECON.RECON_TYPE_ID = TM_RECON_TYPE.RECON_TYPE_ID AND TM_RECON.TEXT_ID = ProfileEO.RECONCILIATION_ACCOUNT_ID AND $ARM_SECURITY_CLAUSE$ AND ProfileEO.PERIOD_ID = -2