需要查找跨多个表的客户记录的最新时间戳

时间:2017-04-09 18:15:59

标签: sql db2

我的客户记录跨越多个表。每个表都有更新的datetimestamp列。

例如: 客户表 - 包含名称,用户名,dob等基本信息。 地址表 - 工作地址,家庭住址 电话表,功能表等。

因此,当地址更新/添加时,其他表记录不会更新。

在这里,我需要找到特定客户何时更新,它可能只是地址,仅手机数据......就像那样......

我的sql需要提供给我 - 给定客户的最新更新日期时间戳。

我正在检查加入所有这些表并使用Max(每个表的更新datetimestamp列)..

但最后,我只需要最新约会..

你能为我提供有助于实现这个目标的SQL吗?

注意:这适用于DB2。

2 个答案:

答案 0 :(得分:1)

您应该对每个表的日期进行选择并将结果合并在一起。然后,您可以在联合中获取此列的最大值。日期列不需要具有相同的名称,但它们必须是相同的数据类型。

Select Max(X.date) 
From (

Select last_update_date as "date" from customer
Union 
 Select last_record_date from customer_transactions
 Union 
 ... select date on as many more tables as needed ...
 ) as X

而不是联合,大多数sql数据库也有一个“union all”,它可以保持重复并运行得更快。

答案 1 :(得分:0)

--if you want the table name with the max timestamp

select * from 
(
select 'TABLE1' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn  from TABLE1
union all
select 'TABLE2' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn  from TABLE2
union all
select 'TABLE3' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn  from TABLE3
) tmp
order by datetimestampcolumn desc
fetch first rows only


--If not necessary to know the table name

select max(datetimestampcolumn) as datetimestampcolumn
from 
(
select datetimestampcolumn from TABLE1
union all
select datetimestampcolumn from TABLE2
union all
select datetimestampcolumn from TABLE3
) tmp