Oracle 11g让我头疼,我无法找到任何与我的问题相关的答案。
我正在尝试计算每个工作单的收入,这不作为计算字段提供,只能通过计算获得。
可用的栏目:
" Labor"和"材料",这两者都可以为客户收取费用。
我现在的代码如下:
SUM(
CASE WHEN ("BOL/BOM Items"."BOLBOM Code") IN ('1-845413','1-845911','1-845912', '1-MW-222') THEN
0
ELSE
("Workorder BOL Items"."Quantity MW (BOL)" * -("Workorder BOL Items"."Charge MW (BOL)")) * "Workorder BOL Items"."Price Incl BTW MW (BOL)"
+
("Workorder BOM Items"."Quantity MW (BOM)" * -("Workorder BOM Items"."Charge MW (BOM)")) * "Workorder BOM Items"."Price Incl BTW MW (BOM)"
END
BY
"Work Orders"."CallID"
)
这样可以完美地计算每个工作单的所有费用,但是当"项目代码"的列时仅。被添加到查询中。当我从视图中排除它时,这并不重要。
示例是添加列时返回112(2x16(人工)+ 1x80(材料))的结果,但是当项目代码列不存在时返回80.
如果没有查询要求附加列,是否有可行的方法?
下面是一个示例数据集,其中包含" CalcRevenue"是理想的结果。
CallID BOLBOM Code CalcRevenue Quantity MW (BOM) Charge MW (BOM) Price Incl BTW MW (BOM) Quantity MW (BOL) Charge MW (BOL) Price Incl BTW MW (BOL)
0010000065554342 1-SW-004 0 0 0 0,00 0 0 0,00
0010000065554342 1-SW-006 0 0 0 0,00 0 0 0,00
0010000065554342 1-SW-008 0 0 0 0,00 0 0 0,00
0010000065554342 1-SW-012 0 0 0 0,00 0 0 0,00
0010000066233542 1-845921 112 1 -1 80,00 0 0 0,00
0010000066233542 1-MW-009 112 0 0 0,00 2 -1 16,00
0010000066233542 1-MW-222 112 0 0 0,00 2 -1 0,00
0010000066233542 1-SW-044 112 0 0 0,00 0 0 0,00
0050001100208165 3-842753 0 1 0 90,75 0 0 0,00
0050001100208165 3-SW-102 0 0 0 0,00 0 0 0,00
0050001100208165 3-SW-104 0 0 0 0,00 0 0 0,00
0050001100208165 3-SW-105 0 0 0 0,00 0 0 0,00
0050001100208165 3-SW-108 0 0 0 0,00 0 0 0,00
0050001100208165 3-SW-109 0 0 0 0,00 0 0 0,00
0050001100208165 3-SW-110 0 0 0 0,00 0 0 0,00
每个CallID都有多个" BOLBOM代码",而后者又有费用/数量和价格列。
如果我删除" BOLBOM"这就是相同数据会发生的情况。 (和相关的)专栏。
CallID CalcRevenue
0010000065554342 0
0010000066233542 208
0050001100208165 0
我想计算每个CallID(工单)的收入 - 计算如下:
Revenue = (Quantity * -(Charge)) * Price
向客户收费时费用为-1,否则为0。 它是根据" BOLBOM"订单的级别,但应该与"工作订单"水平。