同一记录中列的 DB2 最大时间戳

DB2 Max Timestamp of columns in the same record

我在 DB2 中有 3 个 tables A、B、C。他们是一对一的关系。 A 是父 table,B、C 是子 table。

每个 table 都有一个时间戳列,用于跟踪记录的更改。让我们说 T1、T2、T3。

我想编写一个视图,每个键(比如 ID 列)获取 A、B、C 中的所有记录,以便我从所有三个 table 中获取一个逻辑记录。我知道我可以将 A 左外连接与 B 和 C 一起使用。除了包含选定列的逻辑记录外,我还想要 max(T1,T2,T3)。它不是跨行但在同一逻辑记录内的列的最大时间戳。

我不喜欢写查询,因此需要帮助。

假设每个table中每个ID有一条记录,那么:

select a.id, max(a.T1, b.T2, c.T3)
from tblA A
      join tblB B on b.id = a.id
      join tblC C on c.id = a.id

会满足你的要求。 MAX() 只是 returns 给定集合中的最大值。由您决定该集合的来源。

如果不使用 GROUP BYMAX() 只有结果集中每一行的一组值。

结合 GREATEST()VALUE() 将 NULL 更改为任意低时间戳:

SELECT a.id, 
GREATEST(
  VALUE( T1, TIMESTAMP  '1970-01-01 00:00:00'),
  VALUE( T2, TIMESTAMP  '1970-01-01 00:00:00'),
  VALUE( T3, TIMESTAMP  '1970-01-01 00:00:00')
)     
FROM a
LEFT OUTER JOIN b ON a.id = b.id
LEFT OUTER JOIN c ON a.id = c.id