我需要在transactions表中获取transaction_dates,以写入名为payment_plan的表中的列。但我需要做这个操作只是为政策,有付款方式为直接借记和现金。所以我建立了以下查询;
MERGE INTO PAYMENT_PLAN pp
USING
(
SELECT pt.transaction_date
FROM payment_plan pp
JOIN transactions pt ON (pp.transaction_id = pt.transaction_id)
JOIN policy pol ON (PP.POLICY_ID = POL.POLICY_ID)
WHERE pp.payment_plan_status = 'CLOSED'
AND POL.PAYMENT_METHOD IN ('Cash','DirectDebit')
AND pp.bank_clearance_date IS NULL
AND pp.transaction_id IS NOT NULL
AND pt.transaction_date IS NOT NULL
) ta ON (ta.transaction_id = pp.transaction_id)
WHEN MATCHED THEN UPDATE
SET pp.bank_clearance_date = ta.transaction_date,
pp.effective_date = ta.transaction_date,
ta.receipt_date = ta.transaction_date;
它得到一个“ORA-00904:“TA”.“TRANSACTION_ID”:无效标识符”错误。
那么,我如何才能获得现金和直接借记政策的transaction_date列呢?
1条答案
按热度按时间3npbholx1#
在
USING
子句的查询中,您只包含SELECT pt.transaction_date
,而不包含transaction_id
,因此标识符是未知的。如果你想使用该列,那么你必须将其包含在SELECT
子句中。但是,如果你想更新同一行,那么你可以使用
ROWID
伪列(这实际上是一个指向该行的指针):或者您可以将查询简化为: