我想基于五个不同的表创建一个表,而不是所有的表都包含我需要的数据。它们只有两个公共列,我需要根据日期获取最新字段,但是如果其中一个字段包含数据,并且最新字段为空,我需要保留已经存在的内容。这五张表的结构如下。
TABLE_1
system_code
user_id
item_id
system_name
date
TABLE_2
user_id
item_id
date
TABLE_3
user_id
item_id
date
TABLE_4
user_id
item_id
system_name
system_version
date
TABLE_5
user_id
item_id
system_name
system_version
date
我的输出表需要如下所示:
T_OUTPUT
system_code
user_id
item_id
system_name
system_version
date(latest)
我尝试使用union,但由于某些表不包含system\U名称或system\U版本,因此在使用group by和获取最大日期时会出现重复。此外,如果没有系统名称或系统版本的表具有最新日期,则当前一个日期已经具有来自不同表的系统名称和系统版本时,此字段将为空。例如。
TABLE_1
APL, 1234, asdf, MacOS
TABLE_2
1234, asdf, 07-20-2020
TABLE_3
1234, asdf, 07-20-2020
TABLE_4
1234, asdf, MacOS, Catalina, 07-15-2020
TABLE_5
1234, asdf, MacOS, NULL, 07-15-2020
输出应该是
APL, 1234, asdf, MacOS, Catalina, 07-20-2020
我还考虑使用一个存储过程合并到目标表中,并根据用户id和项目id进行插入和更新。
1条答案
按热度按时间kgqe7b3p1#
我想你想要: