【发布时间】:2013-07-24 23:00:25
【问题描述】:
我有一个 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 正常这可以使用数据库视图来完成还是太复杂了?
【问题讨论】:
-
这个问题很适合面试:p