我有一个SELECT
语句,直到CASE
部分才能正常工作,我认为这只是一个语法错误和lead time
位的情况。我正在使用Oracle APEX。
我收到了错误;
ORA-00923: FROM keyword not found where expected
select
supplier.companyname as "Supplier",
purchaseorder.orderdate as "Order Date",
purchaseorder.duedate as "Due Date",
popayment.datedelivered as "Delivered",
(popayment.paymentdate - popayment.datedelivered) - 31 as paidontime,
/* this is the same as the next one (this works fine) */
(popayment.datedelivered - purchaseorder.duedate) - 1 as deleiverylate,
/* trying to advance the previous query (this does not work) */
popayment.datedelivered - purchaseorder.duedate -1,
case when "lead time" <0 then 'early'
when "lead time" >0 then 'late'
else 'on time'
end as "lead time";
from supplier, purchaseorder, suppliercontact, popayment
where
purchaseorder.SUPPLIERCONTACTID2 = suppliercontact.suppliercontactid
and
supplier.supplierid = suppliercontact.supplierid
and
purchaseorder.purchaseorderid = popayment.purchaseorderid
order by COMPANYNAME
感谢您的帮助 Dangerous Brian
答案 0 :(得分:1)
您应该在;
end as "lead time";
答案 1 :(得分:1)
这是你想要的吗?
SELECT supplier.companyname AS "Supplier",
purchaseorder.orderdate AS "Order Date",
purchaseorder.duedate AS "Due Date",
popayment.datedelivered AS "Delivered",
(popayment.paymentdate - popayment.datedelivered) - 31 AS paidontime,
/* this is the same as the next one (this works fine) */
(popayment.datedelivered - purchaseorder.duedate) - 1 AS deleiverylate,
/* trying to advance the previous query (this does not work) */
CASE
WHEN popayment.datedelivered - purchaseorder.duedate -1 <0
THEN 'early'
WHEN popayment.datedelivered - purchaseorder.duedate -1 >0
THEN 'late'
ELSE 'on time'
END AS "lead time"
FROM supplier,
purchaseorder,
suppliercontact,
popayment
WHERE purchaseorder.SUPPLIERCONTACTID2 = suppliercontact.suppliercontactid
AND supplier.supplierid = suppliercontact.supplierid
AND purchaseorder.purchaseorderid = popayment.purchaseorderid
ORDER BY COMPANYNAME