SQL查询- Oracle GL事务处理明细

busg9geu  于 2023-05-28  发布在  Oracle
关注(0)|答案(2)|浏览(132)

我是一个初学者SQL编码,并需要一些帮助与SQL查询我的建设GL交易明细从Oracle。
我已经能够编写我的查询,并且我成功地能够按照我喜欢的方式放置数据。我想在查询中添加一些东西,我认为这需要一个子查询,但我不确定如何编写它。

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之后设置参数时,我希望能够将汇总的责任编号设置为参数。
嵌套的case函数会在select之后解决这个问题吗?还是有其他功能需要使用?
任何帮助将不胜感激。

wf82jlnq

wf82jlnq1#

您可以使用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?。我希望这有帮助!

fumotvh3

fumotvh32#

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

相关问题