我有個問題。我有一個查詢將作爲夜間工作的一部分運行。這個查詢應該會給我所有在那一天發生的所有操作。但是,這是棘手的部分,它不會總是在同一時間運行。取決於時間的變量日期
因爲它是夜間工作的一部分,所以可能發生在第1天,查詢在00:05運行,第2天運行在23:55。這使查詢變得複雜,因爲我不能說使用今天的日期或使用昨天的日期。
我得到了下面的查詢到目前爲止:
select deuda_id from deuda where n_expediente in
(select
(case when to_char(sysdate, 'HH24:MI:SS') between '00:00:00' and '12:00:00' then
(select n_expediente from cartas_enviadas where codigo_carta in ('OIEUR','OIGBP') and f_envio > trunc(sysdate-1)
) else
(select n_expediente from cartas_enviar where codigo_carta in ('OIEUR','OIGBP')
)
) from dual
);
一點解釋:(數據庫處於西班牙/意大利): deuda_id是唯一的發票號。 n_expediente是案例編號(對於此客戶始終是唯一的)。 f_envio是執行日期。 codigo_carta是動作類型。
Cartas_enviar包含所有到期的操作。當採取行動時,輸入f_envio。一夜之間,所有已執行的操作將從cartas_enviar移至cartas_enviadas)。
笏我試圖做的是以下幾點:
我想看看在當前時間。如果是在午夜之前,我想看看cartas_enviar表,然後從那裏取出n_expediente,但前提是動作是OIEUR或OIGBP。如果是在午夜之後,我想看看cartas_enviadas表,並從那裏取出n_expediente,但前提是動作是OIEUR或OIGBP,並且該動作是在昨天執行的。
但是,當我試圖執行此查詢時,出現以下錯誤消息: ORA-00905: missing keyword
。
有人可以幫我看看這個查詢嗎?
PS:這是Oracle數據庫
好的,菜鳥的錯誤......我忘了把'結束'放在聲明中。但是,現在我得到的錯誤ORA-01427:單行子查詢返回多個行 – Gurbs
我編輯了我的答案,檢查它是否適用於您。 –