SQL查询 - Oracle GL交易细节



我是新手SQL编码器,在我从Oracle的GL交易细节上构建的SQL查询需要一些帮助。

我已经能够编写我的查询,并且能够成功地将数据放置在我喜欢的情况下。我想添加到查询中,我相信这需要一个子查询,但我不确定如何编写。

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交易细节表没有这些列。

我想做的是:我希望能够定义一系列责任中心,并用我可以定义的责任号码分配了它们。当我在位置之后设置参数时,我希望能够将滚动的责任号码设置为参数。

选择此操作后,嵌套的案例函数会解决吗?还是我需要使用另一个功能?

任何帮助将不胜感激。

您可以使用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;
/

查看如何在Oracle SQL开发人员中使用变量?有关替换变量的更多信息。我希望有帮助!

您没有说明列的数据类型,但是我看到隐式类型转换的潜在问题。为了避免这种情况,请使用绑定的变量,该变量匹配该列的类型为子集。

最新更新