【发布时间】:2021-11-08 23:09:01
【问题描述】:
我正在使用 Oracle 11。 我有 2 张桌子
具有列 id、entity_id 和 Effective_date 的 TblA。 带有列 id 和 value 的 TblADetail。 如果生效日期的 Value = 0,我想继续寻找下一个生效日期,直到找到 value 0。
以下查询仅查找 21 年 3 月 10 日的值。 如果值 = 0,我想在 21 年 3 月 11 日寻找值。如果那不是0,我想停下来。 但是,如果那是 0,我想在 21 年 3 月 12 日寻找价值。如果那不是0,我想停下来。 但是,如果那是 0,我想继续寻找直到值不为 0。 我该怎么做?
SELECT SUM(pd.VALUE)
FROM TblA p,TblADetail pd
WHERE p.id = pd.id
AND p.effective_date = to_date('03/10/2021','MM/DD/YYYY')
AND TRIM (p.entity_id) = 123
样本数据: TblA
id entity_id effective_date
1 123 3/10/21
2 123 3/11/21
3 123 3/12/21
TblADetail
id value
1 -136
1 136
2 2000
3 3000
在上述数据中,对于entity_id 123,从 Effective_date 3/10/21 开始,我想返回值 2000(来自 TblADetail) Effective_date 3/11/21。
所以,从某个日期开始,我想要从具有非零值的最小日期开始的结果。
谢谢。
【问题讨论】:
-
样本数据和预期输出在这里会非常有帮助。例如,您要连接两个表并执行
sum,因此大概可以返回多行。你需要两张桌子吗?或者你能用 1 证明问题并简化查询吗?如果要求和的 n 行中有 1 行的value为 0,该怎么办?如果单个value行都不为 0,但sum为 0,该怎么办? -
您是说您想要具有非零值的最小日期的结果,其中日期至少是特定日期?
-
我确实需要 2 个表,因为生效日期来自 TblA,而 Value 来自 TblADetail。单个值行可以为 0,但我正在寻找总和为 0 的时间。我在原始帖子中添加了一个示例。是的,从某个日期开始,我想要具有非零值的最小日期的结果