我正在尝试创建一个计算字段,该字段将根据某些条件选择一行而不是另一行。这就是我的数据
id month window deviation2
0102G116 0
0102G116 1 NO
0102G116 6 In Window
0102G116 12 NO
0102G116 12 NO
0102G116 18 NO
0102G116 24 NO
0114G101 0
0114G101 1 In Window
0114G101 6 In Window
0114G101 12 Out of Window NO
0114G101 12 Out of Window YES
0114G101 18 In Window
0114G101 24 In Window
0114G101 36 Out of Window YES
0116G103 0
0116G103 1 In Window
0116G103 6 In Window
0116G103 12 NO
0116G103 12 NO
0116G103 18 In Window
0116G103 24 In Window
0116G103 36 In Window
0116G103 48 In Window
0116G104 0
0116G104 1 In Window
0116G104 6 In Window
0116G104 12 Out of Window NO
0116G104 12 Out of Window YES
0116G104 18 In Window
0116G104 24 In Window
0116G104 36 In Window
0116G104 48 In Window
WINDOW列中“窗口中”的所有内容都将以空白/ null作为其偏差中的相应值。窗外的一切都可能有3种可能的结果。 YES,NO或NULL(当它在WINDOW列中的“窗口中”时发生NULL)。此外,如果WINDOW列中没有条目,则偏差列中将为NO。
但是,每个id,month组合只能有一行,并且这里有多行的情况。在这种情况下,在它们之间进行选择的逻辑是
if deviation = yes and deviation = no, then deviation = yes. (So only one row should stay with "Yes" as the deviation value)
if deviation = no and deviation = no, then deviation = no. (So only one row should stay with "No" as the deviation value)
if deviation = null and deviation = no/yes then deviation = null (So only one row should stay with "Null" as the deviation value)
我无法提出像deviation2这样的计算列,它将应用上述逻辑。在这种情况下,输出看起来像
id month window deviation
0102G116 0
0102G116 1 NO
0102G116 6 In Window
0102G116 12 NO
0102G116 18 NO
0102G116 24 NO
0114G101 0
0114G101 1 In Window
0114G101 6 In Window
0114G101 12 Out of Window YES
0114G101 18 In Window
0114G101 24 In Window
0114G101 36 Out of Window YES
0116G103 0
0116G103 1 In Window
0116G103 6 In Window
0116G103 12 NO
0116G103 18 In Window
0116G103 24 In Window
0116G103 36 In Window
0116G103 48 In Window
0116G104 0
0116G104 1 In Window
0116G104 6 In Window
0116G104 12 Out of Window YES
0116G104 18 In Window
0116G104 24 In Window
0116G104 36 In Window
0116G104 48 In Window
我试图尽可能详细,让我知道我能做些什么来提高清晰度。
感谢您的帮助。非常感谢
答案 0 :(得分:2)
这是使用详细程度计算(LOD)的好情况。您正在使用以不同详细程度计算的值。
我假设您将字符串字段(“YES”,“NO”)转换为布尔字段(TRUE,FALSE),因为它使事情变得更简单。虽然不是绝对必要的。鉴于此,沿着以下行的公式应该起作用:
{ FIXED id, month : if count(deviation) = count(1) then max(deviation) end}
对于id和month的每个组合,如果任何行具有空偏差,则上述calc返回null。如果所有行都具有偏差的非空值,则其评估为最大值,其中考虑TRUE>假。 (因此,如果任何数据行具有真实偏差,则公式返回true。)