SQL将多个表连接到一个视图

时间:2018-04-26 21:30:45

标签: sql

我要做的是从几个表格中获取数据(+50)并在一般视图中提供这些数据。

“ObjNr”列可以在每个表中存在多次,因此我想获取具有最新时间戳的记录。

有关我的问题的更好解释,请参阅此链接,包括源表和所需结果:

Database overview

我尝试了几种场景,比如解开,......,使用c#在后台执行此操作,...但我真的很好奇最好的方法是实现这一目标。

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER为您的行排名。然后申请UNION ALL

select
  id, objnr, objname, datetime, batchnr, batchnr_component_name
from
(
  select
    id, objnr, objname, datetime, batchnr, batchnr_component_name,
    row_number() over (partition by objnr order by datetime desc) as rn
  from table1
  union all
  select
    id, objnr, objname, datetime, batchnr, batchnr_component_name,
    row_number() over (partition by objnr order by datetime desc) as rn
  from table2
  union all
  select
    id, objnr, objname, datetime, batchnr, batchnr_component_name,
    row_number() over (partition by objnr order by datetime desc) as rn
  from table3
  union all
  select
    id, objnr, objname, datetime, batchnr_2, batchnr_2_component_name,
    row_number() over (partition by objnr order by datetime desc) as rn
  from table3
) ranked
where rn = 1;