2013-05-30 69 views
0

我有一個表格,其中包含將來應有的操作。我有第二個表格,包含所有案件,包括案件的截止日期。我有第三個表格,裏面有數字。更新表格與其他表格的組合字段

問題如下。我們的系統將自動填充我們的表格,以便進一步處理但對於某些客戶,我們需要更改這些日期。我想爲此創建一個更新查詢,並通過我們的調度程序運行。不過,我現在有點困難。

我對到目前爲止的代碼是這樣的:

UPDATE proxima_gestion p 
SET fecha = (SELECT To_char(d.f_ult_vencim + c.hrem01, 'yyyyMMdd') 
       FROM deuda d, 
         c4u_activity_dates c, 
         proxima_gestion p 
       WHERE d.codigo_cliente = c.codigo_cliente 
         AND p.n_expediente = d.n_expediente 
         AND d.saldo > 1000 
         AND p.tipo_gestion_id = 914 
         AND p.codigo_oficina = 33 
         AND d.f_ult_vencim > sysdate) 
WHERE EXISTS (SELECT * 
       FROM proxima_gestion p, 
         deuda d 
       WHERE p.n_expediente = d.n_expediente 
         AND d.saldo > 1000 
         AND p.tipo_gestion_id = 914 
         AND p.codigo_oficina = 33 
         AND d.f_ult_vencim > sysdate) 

領域出生日期是當前操作的日期。不幸的是,這被保存爲char而不是日期。這就是爲什麼我需要將日期轉換回char。 F_ult_vencim是截止日期,而hrem01是行爲應該從截止日期開始放置的天數。 (例如,這可能是10,使得到期日期後10天的新日期)

除此之外,當我們需要更改日期時,還有一些標準(某些債權人,某些部門,僅限於未來的情況下,從一定的數量開始,只針對某種動作類型。)

但是,當我嘗試運行此查詢時,出現錯誤消息 ORA-01427:單行子查詢返回多行

如果我單獨運行這兩個子查詢,我會從兩者中得到2個結果。我試圖完成的是它連接這兩個查詢,並將該字段更新爲新值。每個案件的價值都會有所不同,因爲每個到期日都會有所不同。

這甚至可能嗎?如果是這樣,怎麼樣?

+0

您的proxima_gestion表中有您可以加入/合併的ID字段嗎? – sgeddes

回答

0

您會收到錯誤消息,因爲第一個SELECT正在更新表中的每一行返回多於一行。

我看到的第一件事是UPDATE中表的別名與兩個SELECT(p)中的別名相同。因此,子查詢中對p的所有引用都引用子查詢中的proxima_gestion 而不是外部查詢。也就是說,子查詢不依賴於UPDATE所需的外部查詢。

嘗試在兩個子查詢中從FROM中刪除「proxima_gestion p」。然後,對p的引用將是外部UPDATE查詢。

相關問題