获取并将下一行列的值添加到第一行列

时间:2019-07-03 07:18:12

标签: mysql sql database

我有一个数据库表,如下 enter image description here

我想将每个 SoldD 列添加到下一行 ValT 列中。 例如,以上给定表的查询结果应类似于 enter image description here

以上快照用于预期结果

因此,我尝试了很多事情,但未能获得预期的结果

尝试1失败:

SELECT *,(IFNULL((SELECT VaIT from saleorder s WHERE s.id > ss.id limit 1),0)+ss.SoldD) FROM `saleorder` ss

尝试2失败:

update saleorder SET SoldD=(IFNULL((SELECT VaIT from (SELECT * from saleorder WHERE id > id+1 limit 1) s),0)+SoldD)

我们非常感谢您的帮助,在此先谢谢您!

1 个答案:

答案 0 :(得分:1)

MySql版本:

devtools::install_github("bips-hb/neuralnet")

然后以这种方式调用过程:

output.act.fct

SqlServer版本:

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`()
BEGIN
    DECLARE id2 INT DEFAULT 0;
    declare VALT2 INT DEFAULT 0;
    declare soldD2 INT DEFAULT 0;
    declare beforSo2 INT DEFAULT 0;
    DECLARE cur1 CURSOR FOR SELECT Id, ValT, SoldD FROM saleorder ORDER BY id;
    OPEN cur1;
    FETCH cur1 INTO id2, VALT2, soldD2;
    SET valT2 = soldD2;
    x: LOOP
        IF(valT2 IS NULL) THEN
            SET valT2 = 0;
        END IF;
        IF(beforSo2 IS NULL) THEN
            SET beforSo2 = 0;
        END IF;

        UPDATE saleorder
        SET SoldD = beforSo2 + valT2
        WHERE ID = id2;

        SET beforSo2 = beforSo2 + valT2;
        FETCH cur1 INTO id2, VALT2, soldD2;
    END LOOP;
    CLOSE cur1;
END

基础数据:

enter image description here

结果:

enter image description here