回答

收藏

如何获得上一行的值

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

如何从SELECT语句的上一个结果行中获取值
/ C0 K. B) A, B# R; S如果我们有一个名为cardevent的表,并且有[ID(int),Value(Money)]行,并且其中有一些行,例如
( N8 v/ T' e$ p# k) A" Y8 g/ ?3 LID --Value0 o9 K$ T$ Q; ~- f( R# B
1------70
7 a# j& r7 Q: F7 _1 ]1------901 O. V% k3 H0 S. m' }
2------1000 j- C. @. q3 t3 A; h) R6 V1 A7 j
2------150/ x  o  F3 S7 x4 u/ t
2------300 . q  n' J5 g1 h* u4 `8 T& r, a1 I
3------150
: Y! h+ {2 T1 j, U6 {3------200
. u/ g2 w. P8 v. A3-----250
% D# F1 Z. i0 ?3 u  D# z4 H3-----280/ W( O: I0 @/ e+ v! L
很快…
' \% o; Y- e& C如何进行一个查询,以获取每个行的ID,值和前一个行值,数据在其中显示如下
8 \7 ]2 p, ?; w9 r# [5 AID --- Value ---Prev_Value0 q. _# v5 l5 z' V
1 ----- 70 ----------  0
' F0 f, E# `; }1 ----- 90 ---------- 70
& ~9 K5 K" \% T4 X- ?. h$ ?  C2 ----- 100 --------  90
. H8 T% K" Z9 Y. E, ^8 M5 N# O2 ------150 -------- 100
4 x$ I. U( I( m+ @, j! k, r' X2 ------300 -------- 150
( t3 [9 K  L5 H3 ----- 150 -------- 300 - e: M% E, [& o* a7 A" _
3 ----- 200 -------- 150
) k5 D  f4 J; N$ Y# F* |3 ---- 250 -------- 200 * L  p3 B  h( v
3 ---- 280 -------- 250
5 |3 R2 z3 o2 J很快。. z% r& A. f, L" u4 v$ S5 y- b: ?
那么,有人可以帮助我获得针对此类问题的最佳解决方案吗?
9 H7 ^& y1 |. `需要查询帮助/ C& v" {/ ~- q5 }0 X% o
               
# B" c/ P* ?4 n0 t5 w# x解决方案:) t6 W0 n1 R% Y% B
                ' q% W% E+ Q; \2 K* i
4 Z  }7 G  A3 \' Y. R! h* x

% @/ c; `; ^  c' c* M                您将不得不将表与自身连接,我不确定这是否是100%合法的SQL,但是目前我没有SQL-Server可以尝试此操作,但是请尝试以下操作:
- n  L6 R, z$ B. o) z3 M5 Wselect (ID, Value) from table as table1 join
. \  W0 X7 y, k+ M, N( Q6 finner join table as table2/ q2 P) r8 D6 L. |* W( l/ x4 f0 c- V
on table1.ID = (table2.ID -1)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则