Access SQL查询:查找表中每个不同条目的最新日期的行
技术问答
247 人阅读
|
0 人回复
|
2023-09-14
|
全部,
& n/ D$ H, N9 R) A( V3 @7 {我敢肯定这是一个非常简单的SQL查询问题,但是我敢肯定有一个很好的方法,也很糟糕的方法来做到这一点。留给我自己的设备,我有可能以后者结束。所以…$ l! g" _9 V! n0 _1 p6 D& N
我在Access中有一个表,其中的数据如下所示:: R( F; A" z R
ID Value As_of
+ p# I4 G, c) r8 x* U# X: e1173 156 20090601- n0 \* S t9 G; a8 L3 I
1173 173 20081201
% w! u. K& a$ a) B* n: f1173 307 20080901
# i9 Z1 K( p( k) X% [2 C( L0 v1173 305 20080601, |4 l0 E8 l h' n$ Q) }3 K* K. Q
127 209 200903019 Q" T3 v! P1 `. x% G+ y- a4 U) ~% u
127 103 20081201
9 }- a1 ?# a& f2 [127 113 20080901
( f& m0 c, I& n9 w: i' r! A+ v127 113 20080601
6 @. T! I" k/ G' i0 Q& @1271 166 200902013 ^' |& X/ I+ t! b7 F6 I
1271 172 20081201# h( K5 m1 f ?% J
1271 170 200809015 k7 {* m% P) Q; j: H- I% t( O0 ?
1271 180 200806016 T2 ?" s9 g+ j, ~, ? z" j
..." q; V' f4 b5 z9 U6 _& F
我想要获取的是每个具有唯一“截止日期”日期(采用YYYYMM格式)的唯一ID的“值”。6 Q1 b1 e+ R3 i4 P! M1 h
因此,我的结果集应如下所示:
8 F# V! ]) ~, ]( MID Value As_of
9 U4 C, h1 Y( J E" ?: k1173 156 20090601
# @% {9 E0 w/ D- F% z) ~" b127 209 20090301
0 Z, K( W$ v2 E5 _+ h" s4 ~2 {1 b I0 Y1271 166 200902011 {7 J/ t) b1 ?- a: r! _; D- C7 `
请注意,不同的ID将具有不同的“截止日期”日期。换句话说,我不能简单地从全局上标识最近的日期,然后选择具有该日期的每一行。
% _' B) }; w- K5 p1 z( D& m就其价值而言,该表总共约有200,000行,并具有约10,000个唯一ID。
1 t R2 T; T9 U- S1 @6 z+ g提前谢谢了!1 }8 T( G3 n5 K& }" A$ ~ |
; u6 z; J! m' p# l1 W解决方案:: h( z) L: S) h8 ~' N' D m8 M
C: w' |9 z3 Y8 N$ `* d! l4 v
]" m0 T+ d1 w' i/ I
4 V: O& I: g$ q
如果同时需要日期和值,则需要进行联接:) l! a( V- F6 m: f5 l0 k
SELECT ID, Value,As_of
: E" u. k) S6 F# F l+ jfrom yourTable a inner join
0 V( ^7 u) o1 q1 R6 B (SELECT ID, MAX(As_of) as As_of E4 E$ ], ~* F, ]
from yourTable group by ID) b
6 M1 m" s4 H4 }8 E3 W1 [" j0 ton a.ID=b.ID and a.As_of = b.As_of |
|
|
|
|
|