0

私はオラクル10gを使用しています

いくつかのフィールドを持つ「dp_table」からビュー「dposition_view」を作成する必要があり、最後に「unmatched_flag」のようなブール列が必要です。
「bom_mapping」テーブルが「dp_table」に一致するフィールドを持つレコードを保持していない場合、列の値は「true」になり、2 つのテーブル間に一致するレコードが存在する場合は「false」になります。
チェックする一致フィールドは、eng_code、work_code、position、alt_pos (dp_table および bom_mapping テーブルで共通) です。

このブール値フラグ「unmatched_flag」を設定するロジックはどのようになりますか?

今私は持っています:

Create or Replace view dposition_view (",,,,,"unmatched_flag") as 
(Select dp_table.eng_code,......  'UNMATCHED_FLAG' ?? )
4

1 に答える 1

1

Oracle PL / SQLにはブールデータ型がありますが、OracleSQLにはありません。'TRUE'文字列をand'FALSE'または1andとして保存するつもりかどうかはわかりませんでし0たが、それはあなたの選択です。データ構造も明確ではありませんが、仮定を行った後 、一致する条件で外部結合bom_mappingし、を使用して列に目的のフラグを設定できる場合があります。dp_tableNVL2()unmatched

create or replace view dposition_view(
  /* Your columns */,
  unmatched_flag) 
as
select 
  /* Your columns */,
  NVL2(bom.eng_code,'FALSE','TRUE') unmatched_flag
from dp_table dp
left outer join bom_mapping bom on dp.eng_code = bom.eng_code 
  and dp.work_code = bom.work_code 
  and dp.position = bom.position
  and dp.alt_pos = bom.alt_pos
  and -- Other conditions on the bom_mapping table
where ... -- Conditions on the dp_table

bom.eng_code結合によって一致が見つからない場合はnullになり、一致するレコードがある場合は値になります。次に、一致した場合( )または一致しなかったNVL2()場合()に必要な値を設定できます。FALSETRUE

于 2013-03-18T22:40:51.210 に答える