小编典典

加入表格中的最大日期

sql

SELECT COL1,
    COL2,
    COL3
FROM TABLE1,
    TABLE2,
    TABLE3,
    TABLE4
WHERE TABLE1.KEY1 = TABLE2.KEY1
    AND TABLE2.KEY = TABLE3.KEY
    AND TABLE2.FILTER = 'Y'
    AND TABLE3.FILTER = 'Y'
    AND TABLE2.KEY = TABLE3.KEY
    AND TABLE3.KEY = TABLE4.KEY

我有一个类似的查询,我需要进行修改,在表3中有一个date列,我需要选择日最高值行来加入。可以说表号3中有4行对联接感到满意,我需要从这4个表中选择最高日期的行以进行联接,然后显示结果。

希望问题很明确。数据库Oracle 10g


阅读 213

收藏
2021-04-28

共1个答案

小编典典

尝试类似此查询的操作。

SELECT
    COL1,
    COL2,
    COL3,
    T33.*

FROM TABLE1

JOIN TABLE2 ON TABLE1.KEY1 = TABLE2.KEY1

JOIN TABLE4 ON TABLE2.KEY = TABLE4.KEY

JOIN

(
    SELECT MAX(T.Day) as DT, T.KEY
    FROM TABLE3 T
    WHERE T.FILTER = 'Y'
    GROUP BY T.KEY
) T3 on TABLE4.KEY = T3.KEY

JOIN TABLE3 T33 ON T3.KEY = T33.KEY AND T3.DT = T33.Day

WHERE

TABLE2.FILTER = 'Y'

主要思想是,不要
加入TABLE3您的行列:

SELECT MAX(T.Day) as DT, T.KEY
FROM TABLE3 T
WHERE T.FILTER = 'Y'
GROUP BY T.KEY

给该表/记录集一个名称,然后加入该表/记录集。

然后,你可以再次加入到原来的TABLE3(见T33
拉所有其他需要的列从TABLE3它们
不存在T3

我认为,您可以计算出其他细节。

2021-04-28