sql—从配置单元中具有最大日期的另一个表中选择数据

pcww981p  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(301)

我有一张这样的table

A     B
1    2020-05-01
1    2020-05-04
1    2020-05-05
1    2020-05-06
2    2020-04-10

另一张t2桌

A     C
1    2020-04-30
5    2020-04-08

我需要这样:

A     B             c
1    2020-05-01    2020-04-30
1    2020-05-04    2020-04-30
1    2020-05-05    2020-04-30
1    2020-05-06    2020-04-30
2    2020-04-10    2020-04-08

如您所见,我从表t2中得到最后一个最大日期c,小于b这里2020-04-30是小于2020-05-01,04,05和06的最大日期,2020-04-10是2020-04-08。
我试着这样做,但得到了错误的答案:

select t1.*,t2.C, max(C) over (partition by t2.A ) from t1 inner join t2 on t1.A=t2.A and t2.C<t1.B
mepcadol

mepcadol1#

你可以试试这个:

Select t1.A,t1.B,MAX(t2.B) from t1 t1 join t2 t2 on t1.A=t2.A group by t1.A,t1.B;
unftdfkk

unftdfkk2#

你可以试试这个方法。我使用cte(commontableexpresion)并使用max和groupby查询cte

WITH t AS(
SELECT t1.a, t1.b, t2.c
FROM t1, t2
WHERE t1.b > t2.c)
SELECT a, b, MAX(c) AS c
FROM t
GROUP BY a,b;

预期产量

+----+-------------+-------------+--+
| a  |      b      |      c      |
+----+-------------+-------------+--+
| 1  | 2020-05-01  | 2020-04-30  |
| 1  | 2020-05-04  | 2020-04-30  |
| 1  | 2020-05-05  | 2020-04-30  |
| 1  | 2020-05-06  | 2020-04-30  |
| 2  | 2020-04-10  | 2020-04-08  |
+----+-------------+-------------+--+

相关问题