回答

收藏

GROUP BY与MAX(DATE)[重复]

技术问答 技术问答 46 人阅读 | 0 人回复 | 2023-09-13

这个问题已经在这里有了答案6 O6 {2 [6 O; R
提取具有列最大值的行 (35个答案)
; R7 `1 [$ l7 Y: z9 U  Z3年前关闭。- [$ h( ]3 R$ W  T9 ?6 P
我正在尝试在表格中列出每列火车的最新目的地(最大出发时间),例如:
/ {8 Y+ Z0 C0 w! H9 ]Train    Dest      Time9 S; x+ ^7 e' Q7 @' K
1        HK        10:00; N" h! N1 F5 {" u) x
1        SH        12:00, A: `0 O. e( o' @  S4 @# G
1        SZ        14:00
, f3 |) ?5 `2 _7 J) P3 r& Y  b2        HK        13:00$ c: F9 h, u+ Y4 U
2        SH        09:00- o- g1 V* Q7 k. I6 b: s8 Y' J4 |1 G6 t
2        SZ        07:009 ~6 `- k" @" {& P8 L" C  v2 d) t8 {6 @
理想的结果应该是:2 f! h% d7 Z+ N+ Z: W% N
Train    Dest      Time
! C* E) F* R' F1        SZ        14:00
- u" }& e3 i8 ?0 z2        HK        13:00) b5 L# ^, L" g2 g( u3 ?& F4 D
我尝试使用
) W* {* R! k/ z! i0 p  [9 NSELECT Train, Dest, MAX(Time)
0 _- e* K7 H& X7 z" R# KFROM TrainTable  N- m0 l4 `9 K( J
GROUP BY Train7 q9 {& n4 e( `# v3 L$ e
我收到一个“ ora-00979不是GROUP BY表达式”错误,提示我必须在我的group by语句中包含“目标”。但这肯定不是我想要的…) w3 _- w  w  i! W
是否可以在一行SQL中完成?
8 O2 U- R0 ?4 K               
  l/ X  E* u  g! B. f$ G0 Y解决方案:
! d1 O! E$ E( U! O" i6 g               
' R1 t3 w5 M1 I& u( y( b6 d- A" j- Q5 B% g3 B- g7 L

. l  W5 q7 M3 [% a2 v9 p& b                您不能在结果集中包括未分组的未聚合列。如果火车只有一个目的地,则只需将“目的地”列添加到group by子句中,否则您需要重新考虑您的查询。" H/ T/ N5 P2 Y8 Q
尝试:
+ T7 t) a3 g* T4 ]; }* d2 kSELECT t.Train, t.Dest, r.MaxTime4 ]& W" j" {5 H: f) ]) U
FROM () k; {' v/ P, n% N5 ], O9 S
      SELECT Train, MAX(Time) as MaxTime
, N, m6 f* }3 r2 E  y. |! N/ a, U      FROM TrainTable' S  X6 ^: K0 Z7 U8 g% Z( `4 e7 K
      GROUP BY Train
* l' i0 f, [9 R; I) r
' t6 L1 |. T- f8 t6 f8 AINNER JOIN TrainTable t
! k8 `  [; k  ^6 F; E* DON t.Train = r.Train AND t.Time = r.MaxTime
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则