回答

收藏

SQL多列排序

技术问答 技术问答 266 人阅读 | 0 人回复 | 2023-09-14

我得到以下结果, z0 |+ b: A* z$ j- ]( i: Q
VendorName | IncidentID | IncidentStatus | IncidentDate
2 C1 o5 M9 s) p7 t, C7 w. A" g8 D* K-------------------------------------------------------
6 T. \4 k6 p5 r- HXYZ        | 100        |     Open       | 02-JUN-2011    * o/ W4 V& Z8 `1 J4 y% h
XYZ        | 101        |     Open       | 03-JUN-2011  
5 k' @5 r9 r, H8 P- s1 LABC        | 102        |     Open       | 01-JUN-2011  
, M, K3 o: \# ~XYZ        | 103        |     Open       | 01-APR-2011  . X% g7 V4 H4 a1 B3 ]
ABC        | 105        |     Open       | 05-JUN-2011
! K. n1 v2 F) |. G! j6 m/ [. G我要订购VendorName最近发生的事件。供应商ABC具有最新的事件,因此应该首先与同一供应商的所有其他事件一起发生,然后是所有事件均按降序排列的下一个供应商。期望的结果是这样的-+ c! ]4 C' F) t
VendorName | IncidentID | IncidentStatus | IncidentDate  0 K0 R5 R5 r; c* W; U1 Y
-------------------------------------------------------. q6 }& X1 Q# ^+ L0 K* t" S# a9 m( ?0 B; ?
ABC        | 105        |     Open       | 05-JUN-2011 9 n) i2 y* a* o. q5 W6 P
ABC        | 102        |     Open       | 01-JUN-2011( y& y- w3 C0 o# c, D* A, F
XYZ        | 101        |     Open       | 03-JUN-2011
6 u4 u; ^) K$ rXYZ        | 100        |     Open       | 02-JUN-2011   
7 z) O5 {( b+ C5 t8 H2 FXYZ        | 103        |     Open       | 01-APR-20116 G+ e( L1 j* f, O1 E- e
ORDER BY IncidentDate desc, VendorName没有给出期望的输出。有什么帮助吗?" h) @1 J; I) X# I; i% `7 r0 o# t( J
               
7 K: o( K4 i/ e+ c解决方案:
& a, u; @! `1 x! m( g  Z* W! \) a                ) @/ z" |& m& z8 z, Q( R
/ V3 O7 h/ ]3 m0 C
8 x" \% Q6 I' s
                使用分析功能:! Z6 K3 r8 T  ?3 |( f
SELECT *1 `7 I; U& t% @
FROM(* _. r7 X# P' i
    SELECT
  M# c1 Y* F- V3 z# g        VendorName, ; {, `; t( B8 V, @
        IncidentID, , L- A. j1 j% E* G
        IncidentStatus,
% `/ B3 S9 J9 C3 m2 l4 q# ~) }2 h        IncidentDate, % q. v% E; b0 E! @# L+ p! n% X
        MAX(IncidentDate) OVER (PARTITION BY VendorName) maxDate
6 p( c$ p+ j) G5 d# L: c* ?    FROM yourTable
3 G' s" J9 E4 R+ a) t
$ V# n& A: d. \3 W/ j. [ORDER BY t.maxDate DESC, t.VendorName ASC, t.IncidentDate DESC3 u9 x# h. |/ F+ b! {5 @
请参阅: http:8 [7 `3 m/ i; L; R( ?
//docs.oracle.com/javadb/10.8.2.2/ref/rrefsqlj13658.html
  ]1 W( B2 _: c5 m% p
0 B2 m. h; i' Y/ uhttp://docs.oracle.com/cd/E11882_01/server.112/e10592/functions003.htm( `' l- V4 H1 t- D4 V3 d
+ F2 V. L5 R# S% N
http://( x  p$ B- j' U7 k* x
/docs.oracle.com/cd/E11882_01/server.112/e26088/functions004.htm
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则