我要做的是从几个表格中获取数据(+50)并在一般视图中提供这些数据。
“ObjNr”列可以在每个表中存在多次,因此我想获取具有最新时间戳的记录。
有关我的问题的更好解释,请参阅此链接,包括源表和所需结果:
我尝试了几种场景,比如解开,......,使用c#在后台执行此操作,...但我真的很好奇最好的方法是实现这一目标。
提前致谢!
答案 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;