根据查询中另一列的日期选择列

问题描述 投票:0回答:1

我有几个不相关的表,我一直在尝试将它们连接在一起,而我的问题来自于一个列获取第一个结果,这会产生不准确的数据。这是通过日期字段进行增强的,但我无法让它产生所需的结果。

表a:

地点 公司 日期
321 111 1/1
123 222 2/2
321 222 3/3
123 111 4/4

表b:

工作 地点
zz 321
xxx 123
select a.companies, b.locations, b.job
where a.locations=b.locations
group by b.job

还有其他尝试,但所有这些都返回无效结果。我什至尝试了一个案例 a.companies > 1,并对其进行子查询。作为一个菜鸟,我可能已经达到了极限。

a.companies有没有办法返回a.dates中最新日期的结果?

最终结果应如下所示:

公司 地点 工作
222 321 zz
111 123 xxx

相反,它获取 a.companies 中找到的第一个结果(作为第一个结果):

公司 地点 工作
111 321 zz
222 123 xxx
sqlite
1个回答
0
投票

我能够通过使用 ROW_NUMBER() 并加入表 a 上的行号来解决我的问题。这个问题可以结束了。最终查询如下所示:

SELECT location, company
from (select
a.location,
b.company,
a.date,
row_number() over(partition by a.location order by a.date DESC) rn
where a.job=b.job
group by a.location, b.company, a.date
order by b.company, a.date DESC) t
where t.rn = 1
group by company, location
order by company;



© www.soinside.com 2019 - 2024. All rights reserved.