giò*_*giò 3 sql group-by left-join greatest-n-per-group amazon-redshift
我有两张桌子:
person_id | name
1 name1
2 name2
3 name3
Run Code Online (Sandbox Code Playgroud)
和第二个表:
person_id | date | balance
1 2016-03 1200 ---- \
1 2016-04 700 ---- > same person
1 2016-05 400 ---- /
3 2016-05 4000
Run Code Online (Sandbox Code Playgroud)
考虑到person_id 1在第二个表上有三个记录,我如何才能加入第一个记录?(即:余额400,对应日期:2016-05).
例如:查询输出:
person_id | name | balance
1 name1 400
2 name2 ---
3 name3 4000
Run Code Online (Sandbox Code Playgroud)
如果它可能更喜欢简单而不是解决方案的复杂性
适用于所有数据库引擎的查询是
select t1.name, t2.person_id, t2.balance
from table1 t1
join table2 t2 on t1.person_id = t2.person_id
join
(
select person_id, max(date) as mdate
from table2
group by person_id
) t3 on t2.person_id = t3.person_id and t2.date = t3.mdate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |