我有三个表,我想通过id连接表。但我的问题是,在一个表中,我得到了多个特定id的结果,我只想要最新日期的行。
伪代码:
SELECT * FROM TABLE_A a
LEFT JOIN TABLE_B b ON b.ID = a.ID
LEFT JOIN (TABLE_C subquery where I want only the row where DATECOLUMN has the newest date)
字符串
我可以像这样在一个查询中得到行SELECT * FROM TABLE_C ORDER BY DATECOLUM DESC FETCH FIRST 1 ROW ONLY
但是我还没有设法构造一个查询,在这个查询中,我还能够将结果与子查询连接起来
我试过谷歌搜索,甚至得到了一些帮助不和谐,但无法得到任何工作的解决方案
3条答案
按热度按时间w8ntj3qf1#
一个选项是在子查询中定义每个ID的最大日期。这将导致每个ID 1行,因此您可以在ID列上连接它:
字符串
.用一些虚拟样本数据进行测试
型
结果作为
型
mefy6pfw2#
一个非常干净的解决方案是使用 * 横向内联视图 *:
字符串
hc8w905p3#
使用
OUTER LATERAL
联接:字符串
或者使用
ROW_NUMBER
解析函数(或者如果你想要与FETCH FIRST ROW WITH TIES
相同的行为,使用RANK
解析函数):型
fiddle