我有一个 Oracle 11 数据库表,用于跟踪每个部门的库存项目状态。
ITEM_NUMBER DEPT_NO 状态 ------------ --------- --------- 1 AAA 好的 2 AAA OK 3 AAA 缺失 4 血脑屏障正常 5 BBB 正常 6 AAA OK 7 AAA OK
我想创建一个视图,按部门和状态显示每个项目范围。如果范围内的任何项目为 MISSING,则状态应为 MISSING,否则应为 OK。
在上面的例子中,视图输出应该是:
START END DEPT_NO STATUS ------ ----- -------- ------------ 1 3 AAA 缺失 4 5 BBB 正常 6 7 AAA OK
如果部门只有一组记录,这将是一件简单的事情 - 但是,同一个部门可以显示在不同的范围内,因此使用 MIN/MAX 进行 GROUP BY 不起作用,因为它最终会汇总两个范围对于部门 AAA 作为一个:
选择部门编号,最小(项目编号),最大(项目编号),最小(状态) 从库存 按部门编号分组 START END DEPT_NO STATUS ------ ----- -------- ------------ 1 7 AAA 缺失 4 5 BBB 正常
这可以使用数据库视图来完成还是太复杂了?