我已经做出了一个案例声明,基本上告诉我何时在不同日期为不同的井打开/部分打开/关闭不同的区域。但这只是定期更改,因此我想将状态更改与以前的状态值一起保留在几个空值之间。理想情况下,我希望在与case语句相同的计算中使用该变量,但是您显然不能在其中使用循环参数,因此我可以创建一个新列来做到这一点,但是仍然无法填补空白。
下面是我的数据集的简化版本,当井下没有任何东西时,“ 1st”和“ 2a”列中的当前输出将返回0;如果部分移植,则返回0.5;如果被空白,则返回1。现在,如果该月的月份没有变化,我只需要在case语句中返回null。
Well Date Zone In Size In Zone Out Size Out 1st 2a
101 1/2019 2a blank 0
101 2/2019
101 3/2019 2a blank 1
101 4/2019 1st port 0.5
101 5/2019
101 6/2019
101 7/2019 1st port 0
下面是我想要的'1st'和'2a'列的状态。
Well Date Zone In Size In Zone Out Size Out 1st 2a
101 1/2019 2a blank 0 0
101 2/2019 0 0
101 3/2019 2a blank 0 1
101 4/2019 1st port 0.5 1
101 5/2019 0.5 1
101 6/2019 0.5 1
101 7/2019 1st port 0 1
或
Well Date Zone In Size In Zone Out Size Out 1st 2a 1st filled 2a filled
101 1/2019 2a blank 0 0 0
101 2/2019 0 0
101 3/2019 2a blank 1 0 1
101 4/2019 1st port 0.5 0.5 1
101 5/2019 0.5 1
101 6/2019 0.5 1
101 7/2019 1st port 0 0 1
正如我之前说过的,我在这些列上使用了case语句,因为给出的输入区域/大小数据比我在这里显示的要复杂一些,因此具有辅助的'1st fill'和'如果需要,可以使用2a填充的'列。
..
如果有人想要/需要它,下面是我当前最简单案例中的一个例子:
case
when ([Zone In]="1st") and ([Port_Size In]=0) then 1
when ([Zone In]="1st") and ([Port_Size In]!=0) then 0.5
when [Zone Out]="1st" then 0
else NULL
end
((在输入数据中,值为0表示它是空白的,其他任何东西都是端口大小,因此代码与简化数据示例不完全匹配。)
任何人都可以给我的帮助将非常感激!!!如果您需要其他任何信息,请告诉我。
对于第一个填充尝试此操作,对于2a填充尝试相同的模式:
SN(LastValidBefore([1st]),0)
LastValidBefore采用当前值之前的最后一个有效值。SN在没有这样的有效值的地方(在开始时)将零放置。
Gaia