【发布时间】:2021-07-08 18:29:25
【问题描述】:
我有下表
| Project No | STAGES | completion date |
|---|---|---|
| PROJ_001 | 1 | 12-MAR-21 |
| PROJ_001 | 2 | 14-MAR-21 |
| PROJ_001 | 3 | 15-MAR-21 |
| PROJ_001 | 4 | 18-MAR-21 |
| PROJ_002 | 1 | 18-MAR-21 |
| PROJ_002 | 2 | 19-MAR-21 |
| PROJ_002 | 3 | 19-MAR-21 |
| PROJ_002 | 4 | 23-MAR-21 |
假设表格按项目编号和阶段排序。 我必须检查第 1 阶段的日期是否小于第 2 阶段 同样,第 2 阶段的日期应小于第 3 阶段 第三阶段的日期应该小于第四阶段。
这应该发生在项目的所有阶段。
| Project No | STAGES | completion date | output |
|---|---|---|---|
| PROJ_001 | 1 | 12-MAR-21 | Correct |
| PROJ_001 | 2 | 14-MAR-21 | Correct |
| PROJ_001 | 3 | 15-MAR-21 | correct |
| PROJ_001 | 4 | 18-MAR-21 | correct |
| PROJ_002 | 1 | 19-MAR-21 | incorrect |
| PROJ_002 | 2 | 17-MAR-21 | incorrect |
| PROJ_002 | 3 | 16-MAR-21 | correct |
| PROJ_002 | 4 | 23-MAR-21 | correct |
这里项目 2 的第 1 阶段不小于第 2 阶段,因此不正确。 默认情况下,第 4 阶段应该是正确的。
有人可以指导我吗?
【问题讨论】:
-
您必须告诉我们一些更复杂的情况。例如,如果第 1 阶段、第 2 阶段和第 3 阶段的日期完全相反,该怎么办?在那种情况下,第 2 阶段可以吗(只有第 1 阶段和第 3 阶段是错误的)?或者你认为这三个都是错的?这意味着,从本质上讲,两个“错误”阶段之间的阶段必须所有都被视为“错误”?
-
换一种说法:如果你看一个特定的阶段,你必须确定它是否“正确”,这里有两种方法来看待它(在大多数情况下结果非常不同):( 1)看看它在“时间序列”中的位置是否等于它的阶段号;如果是这样,称其为“正确”。 (2)(更严格)查看是否所有较早的阶段都有更早的完成日期(比这一行),所有后面的阶段都有更晚的完成日期。只有当所有这些条件都为真时,才称该行“正确”。在这种解释中,可以认为“正确”的行数要少得多。
-
第三种可能性(通常与上述 (1) 和 (2) 的结果也不同):如果所有 earlier 阶段都已经完成,则该行是“正确的”完全的;不要看后期阶段来比较。 重要提示:作为程序员,您不应该决定哪些选择对您的用户来说是正确的业务问题。除非您已经知道他们对问题的定义(并且您可以与我们分享),否则不要猜测。请业务用户澄清问题。
-
嗨 Mathguy,如果两个阶段之间的阶段是“错误的”,那么所有阶段都不能被视为错误。
-
更多观察。首先,“所需输出”中的数据与第一组数据不匹配。也就是说,第二个项目的完成日期完全不同。其次,在“期望的输出”中,第二个项目的日期,即第 3 阶段,是整个项目的最早日期。这怎么可能是“正确的”?你的问题是有道理的,但你的插图没有任何意义。看来你没太注意。
标签: oracle oracle11g oracle10g