首页 > 解决方案 > qlikview 中以下行的总和

问题描述

我有一张这样的桌子:

日期 数量
2021 年 1 月 6 日 300
2021 年 1 月 5 日 200
2021 年 1 月 4 日 -100
2021 年 1 月 3 日 -500
2021 年 1 月 2 日 200
2021 年 1 月 1 日 100

我想得到一个包含运行总数的列,但将最小值保持为 0。一旦低于 0,总数就会重置为 0。

预期结果如下

日期 数量 全部的
2021 年 1 月 6 日 300 500
2021 年 1 月 5 日 200 200
2021 年 1 月 4 日 -100 0
2021 年 1 月 3 日 -500 0
2021 年 1 月 2 日 200 200
2021 年 1 月 1 日 100 100

标签: qlikview

解决方案


首先,我们需要对数据进行排序。

其次,我们需要选择以前的总额并添加当前金额+添加条件。

第三,我们需要按照我们喜欢的方式对我们的餐桌进行排序(最新的在顶部)。

使用的最重要的功能是Peek

// example data (I simplified data)
[data]:
LOAD 
    * 
INLINE [
    Date, Amount
    6, 300
    5, 200
    4, -100
    3, -500
    2, 200
    1, 100
];

// order as we need use data from previous row correctly
[data_ordered]:
NoConcatenate LOAD 
    *
Resident
    [data]
Order by 
    Date asc;
    
DROP Table [data];

// condition, peek function and alt needed for first row where is no data yet
[data_totals]:
LOAD
    Date,
    Amount,
    If((Amount + Alt(Peek('Total', -1), 0)) > 0,
        Amount + Alt(Peek('Total', -1), 0),
        0) as Total
Resident
    [data_ordered];
    
DROP Table [data_ordered];

决赛桌:

使用 Peek qlikview 函数创建的表


推荐阅读