根据行间条件查看人口

View population based on inter-row conditions

我正在尝试创建和填充一个视图,但有一些棘手的标准使我的速度很慢。 所有流入的数据都来自数据库中的其他 table。

只有当另一行(相同 table)符合给定的约束时,我才需要选择一行:例如,给定一条记录,如果:

示例:

1. CODE1 - TYPE.A - 01/12 - 200
2. CODE1 - TYPE.B - 01/12 - 300
3. CODE1 - TYPE.B - 01/09 - 300
4. CODE1 - TYPE.B - 01/12 - 100
5. CODE2 - TYPE.B - 01/12 - 200
6. CODE1 - TYPE.A - 01/12 - 300

在上面的记录中,我只取第 2 行,因为它与一行 TYPE "A" 共享代码(限制 1),它具有特定的 TYPE "B" (R2) , 它与所述记录 (R3) 具有匹配日期,并且其 VALUE 大于匹配记录 (300>200)。

这只是为了让您了解整个场景。 我想不通的是如何在同一个 table.

中进行此类行间检查

我希望我的解释足以让您了解问题!

如果我没理解错的话,你可以用 join:

select t.*
from t join
     t tt
     on t.code = tt.code and
        t.date = tt.date
        t.type = 'Type.B' and
        tt.type = 'Type.A' and
        t.value > tt.value;

或等效地,exists

select t.*
from t
where exists (select 1
              from tt
              where t.code = tt.code and
                    t.date = tt.date
                    t.type = 'Type.B' and
                    tt.type = 'Type.A' and
                    t.value > tt.value
             );