0

以下は、特定の条件に基づいてレコードを取得するために使用しているクエリです。クエリを個別に使用すると結果が得られますが、ユニオンを追加すると、コマンドが正しく終了しないというエラーが表示されます。

    select ltrim(rtrim(LV_ID)) || '|' ||  ltrim(rtrim(EXPS_TYP_CD)) || '|'
from sysadm.OM_CDM_PC_HNDSHAKE
where ltrim(rtrim(PROC_ID)) in 'B3_HNDSHK_OTC' and RUN_ID = 'ME-BD10'
and FISCAL_YEAR=2012 and ACCOUNTING_PERIOD=8 and BUS_DAY_NO=10
and ltrim(rtrim(LV_ID)) not in (' ','0','002','BEAD0')
order by ltrim(rtrim(LV_ID)) || '|' || ltrim(rtrim(EXPS_TYP_CD)) || '|'
union
select ltrim(rtrim(LV_ID)) || '|' ||  ltrim(rtrim(EXPS_TYP_CD)) || '|'
from sysadm.OM_CDM_PC_HNDSHAKE
where ltrim(rtrim(PROC_ID)) in 'B3_HNDSHK_OTC' and RUN_ID = 'ME-BD10'
and FISCAL_YEAR=2012 and ACCOUNTING_PERIOD=8 and BUS_DAY_NO=10
and ltrim(rtrim(LV_ID)) is null
order by ltrim(rtrim(LV_ID)) || '|' || ltrim(rtrim(EXPS_TYP_CD)) || '|'
4

1 に答える 1

1

問題は、組合の2つの部分に「order by」句があることにあると思われます。それらを削除してみて、何が得られるかを確認してください。その結果が得られれば、外部から注文を追加できる可能性があります。

または、「共用体」の代わりに「または」を使用するようにクエリを書き直してみてください。

何かのようなもの:

select ltrim(rtrim(LV_ID)) || '|' ||  ltrim(rtrim(EXPS_TYP_CD)) || '|'
   from sysadm.OM_CDM_PC_HNDSHAKE
where 
   (ltrim(rtrim(PROC_ID)) in 'B3_HNDSHK_OTC' and RUN_ID = 'ME-BD10'
     and FISCAL_YEAR=2012 and ACCOUNTING_PERIOD=8 and BUS_DAY_NO=10
     and ltrim(rtrim(LV_ID)) not in (' ','0','002','BEAD0')) 
   or
   (ltrim(rtrim(PROC_ID)) in 'B3_HNDSHK_OTC' and RUN_ID = 'ME-BD10'
     and FISCAL_YEAR=2012 and ACCOUNTING_PERIOD=8 and BUS_DAY_NO=10
     and ltrim(rtrim(LV_ID)) is null)
order by ltrim(rtrim(LV_ID)) || '|' || ltrim(rtrim(EXPS_TYP_CD)) || '|'

残念ながら、現時点ではこれをテストするオラクルのインスタンスはありませんが、ユニオンの両方の部分で同じテーブルから同じものを選択しているので、「または」でそれを実行できるはずです。

于 2013-02-06T01:13:07.970 に答える