各部門の在庫品目のステータスを追跡する Oracle 11 データベース テーブルがあります。
ITEM_NUMBER DEPT_NO STATUS ----------- --------- --------- 1 AAA OK 2 AAA OK 3 AAA 行方不明 4 BBB OK 5 BBB OK 6 AAA OK 7 AAA OK
アイテムの範囲ごと、部署ごと、ステータスを表示するビューを作成したいと考えています。範囲内のいずれかの項目が MISSING である場合、ステータスは MISSING である必要があり、そうでない場合は OK である必要があります。
上記の例では、ビューの出力は次のようになります。
START END DEPT_NO STATUS ------ ------ ------- ------------ 1 3 AAA 欠落 4 5 BBB OK 6 7 AAA OK
部門にレコードのグループが 1 つしかない場合、これは簡単に実行できますが、同じ部門が異なる範囲に表示される可能性があるため、MIN/MAX で GROUP BY を実行すると、2 つの範囲が合計されるため機能しません。部門 AAA の場合:
dept_no、min(アイテム番号)、max(アイテム番号)、min(ステータス)を選択 在庫から dept_no でグループ化 START END DEPT_NO STATUS ------ ------ ------- ------------ 1 7 AAA 欠落 4 5 BBB OK
これはデータベース ビューを使用して行うことができますか、それとも複雑すぎますか?