2017-06-05 52 views
2

我是一名初級SQL編碼人員,需要一些幫助,幫助我爲Oracle的GL事務處理詳細信息構建SQL查詢。SQL查詢 - Oracle GL事務處理詳細信息

我已經能夠寫我的查詢,並且我能夠成功地將數據放在我喜歡的位置。有一些我想添加到查詢,我相信需要一個子查詢,但我不知道如何寫它。

SELECT CLIENT, 
RESPONSIBILITY, 
SERVICE_LINE, 
STOB, 
PROJECT, 
JE_LINES_NET_ACT_AMOUNT AS "ACTUAL_AMOUNT", 
EFFECTIVE_DATE, 
PERIOD_NAME, 
VENDOR_NAME, 
DISTRIBUTION_SUPPLIER_NAME, 
CASE WHEN JE_LINE_DESCRIPTION='Journal Import Created' THEN 
    AP_DISTRIBUTION_DESCRIPTION ELSE 
    JE_LINE_DESCRIPTION END AS DESCRIPTION, 
CASE WHEN JE_HEADER_NAME LIKE '%Purchase%' THEN 
    INVOICE_NUMBER ELSE 
    JE_HEADER_NAME END AS DOCUMENT_NUMBER 
FROM GL_Detail 
WHERE RESPONSIBILITY BETWEEN '17500' AND '17511' 
    AND EFFECTIVE_DATE BETWEEN '2016/04/01' AND '2017/03/31' 
    AND JE_LINES_NET_ACT_AMOUNT <> 0 

以上是我用於查詢的代碼示例。目前,我已經爲一系列責任中心(或成本中心)提供數據。爲了報告目的,我們將這些責任中心分爲不同級別的地點和部門。大多數用戶希望通過這些彙總的責任編號來提取數據;但是我們的GL交易明細表沒有這些列。

我希望能夠做到的事情:我希望能夠定義一系列責任中心併爲他們分配他們可以定義的責任編號。當我在WHERE之後設置參數時,我希望能夠將捲起的責任編號設置爲參數。

選擇後,嵌套的情況下功能會解決這個問題嗎?還是有另一個功能我需要使用?

任何幫助將不勝感激。

回答

0

您可以使用PL/SQL腳本爲您提供結果。您在陳述之前使用ACCEPT命令。另外請注意,因爲我已經轉向PL/SQL,所以我在查詢結尾添加了分號和正斜槓。

ACCEPT resp_start NUMBER PROMPT 'Enter responsibility start range: ' 
ACCEPT resp_end NUMBER PROMPT 'Enter responsibility end range: ' 

SELECT 
    . . . 
FROM GL_Detail 
WHERE RESPONSIBILITY BETWEEN '&resp_start' AND '&resp_end' 
AND EFFECTIVE_DATE BETWEEN '2016/04/01' AND '2017/03/31' 
AND JE_LINES_NET_ACT_AMOUNT <> 0; 
/

關於替代變量的詳細信息,請參閱How do I use variables in Oracle SQL Developer?。我希望這有助於!

0

你沒有說明你的列的數據類型,但我看到隱式類型轉換的潛在問題。爲了避免這種情況,請使用與正在子集的列的類型相匹配的綁定變量。