同一记录中列的 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 BY
,MAX()
只有结果集中每一行的一组值。
结合 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
我在 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 BY
,MAX()
只有结果集中每一行的一组值。
结合 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