回答

收藏

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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则