【发布时间】:2017-11-03 06:33:05
【问题描述】:
有一张桌子——我们称之为DemoReport——有下面的一组键。
-
YearOfGeneration -
WeekOfGeneration -
Key3 -
Key4
还有一列用于表示最新记录的标志。此列不是键的一部分。如果此标志为真,则特定记录是最新记录。 当通过代码创建记录时,默认情况下此标志设置为 true。
示例记录应如下所示:
| *YearOfGeneration* | *WeekOfGeneration* | *Key3* | *Key4* | *Latest*
| 2017 | 2 | Key3Sample1 | Key4Sample1 | 1
| 2017 | 3 | Key3Sample1 | Key4Sample1 | 1
当Key3 和Key4 相同时,任何记录都应该标记为最新,并且YearOfGeneration 和WeekOfGeneration 应该是最新的。所以在上面的例子中,第二条记录的最新标志应该设置为真,第一条记录应该设置为假。
要求是编写一个 sql 来识别和更新记录以取消设置非最新记录上的“最新”标志。
有人可以建议sql应该怎么写吗?
【问题讨论】:
-
您为什么要在表本身中存储关于哪一行是最新的信息?这应该是查找“最新”行的某些视图或查询的一部分(取决于业务需求);我们通常不会将聚合结果存储在 OLTP 系统中的表中。
标签: oracle duplicates