我是一个初学者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之后解决这个问题吗?还是有其他功能需要使用?
任何帮助将不胜感激。
2条答案
按热度按时间wf82jlnq1#
您可以使用PL/SQL脚本来给予该结果。在语句之前使用ACCEPT命令。还要注意,因为我让您转换到PL/SQL,所以我在查询的末尾添加了分号和正斜杠。
有关替换变量的更多信息,请参见How do I use variables in Oracle SQL Developer?。我希望这有帮助!
fumotvh32#
您没有说明列的数据类型,但我看到隐式类型转换的潜在问题。为避免这种情况,请使用与要被子集化的列的类型相匹配的绑定变量。