Sql server sql中的当前行+上一行
我有一张像这样的桌子Sql server sql中的当前行+上一行,sql-server,Sql Server,我有一张像这样的桌子 beginv nm nm1 qty qty1 endinv seq 0 a ab1 5 7 0 1 0 a ab2 15 7 0 2 0 a ab3 11 9 0 3 0 a ab3 11 9 0 4 0 a ab3 11 9 0 5 0
beginv nm nm1 qty qty1 endinv seq
0 a ab1 5 7 0 1
0 a ab2 15 7 0 2
0 a ab3 11 9 0 3
0 a ab3 11 9 0 4
0 a ab3 11 9 0 5
0 b ab2 10 14 0 1
0 b ab3 11 9 0 2
0 c ab1 11 9 0 1
0 c ab2 15 9 0 2
0 c ab3 15 9 0 3
有没有一种方式可以像下面这样展示
beginv nm nm1 qty qty1 endinv seq
0 a ab1 5 7 7 1
0 a ab2 15 7 15 2
0 a ab3 11 9 17 3
0 a ab3 11 9 17 4
0 a ab3 11 9 17 5
0 b ab2 10 14 14 1
0 b ab3 11 9 16 2
0 c ab1 11 9 9 1
0 c ab2 15 9 15 2
0 c ab3 15 9 21 3
如果seq为1,则endinv=qty1,否则上一个endinv+qty-qty1
同样的nm,nm1重复上一个endiv,例如,使用ab3的a重复三次,使用相同的endiv值似乎可以使用两个带窗口的条件和来实现这一点。但是请注意,结果与您的预期结果不匹配,但我假设这是因为您的预期结果是错误的。您声明所需的逻辑为previousendinv+qty-qty1,但是,当seq的值为4且nm的值为a时,endinv的值为17。然而,应用你的逻辑,你有17+11-9,等于19而不是17 选择beginv, 纳米, nm1, 数量, qty1, SUMCASE seq WHEN 1 THEN qty1 ELSE qty END OVER PARTITION BY nm ORDER BY seq行在无界的前一行和当前行之间- SUMCASE seq WHEN 1然后0 ELSE qty1结束于按nm顺序按seq行划分的无界前一行和当前行之间,作为endinv, 序号 从值0、'a'、'ab1',5,7,0,1, 0,'a','ab2',15,7,0,2, 0,'a','ab3',11,9,0,3, 0,'a','ab3',11,9,0,4, 0,'a','ab3',11,9,0,5, 0,'b','ab2',10,14,0,1, 0,'b','ab3',11,9,0,2, 0,'c','ab1',11,9,0,1, 0,'c','ab2',15,9,0,2, 0、'c'、'ab3',15,9,0,3Vbeginv、nm、nm1、数量、qty1、endinv、seq;
事实上,这是一个条件,如果nm和nm1再次出现,则endinv值应与之前相同,例如,a和ab3使用相同的endinv值重复三次我不理解您的评论,@deeSQL,但听起来您好像在移动球门柱。。。在你收到答案后,你会非常不高兴的事情。事实上,这就是我在我的帖子中的意思。同一个nm,nm1正在重复上一个endiv,例如,a和ab3在相同的endiv值下重复三次,但我猜无法正确阐述。呵呵。对此表示歉意