Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql中的当前行+上一行_Sql Server - Fatal编程技术网

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值下重复三次,但我猜无法正确阐述。呵呵。对此表示歉意