为什么我不能在更新语句中添加条件?

时间:2019-01-10 02:29:38

标签: kdb

我有一张桌子:

t:([]val:10?100)

我想添加一个包含cond语句的列:如果值小于55,则将其设置为55。但是update语句不适用于此:

update newVal:$[val<55;55;val] from

我该如何更改?

谢谢。

2 个答案:

答案 0 :(得分:3)

由于val是向量,因此必须使用条件向量

update newVal:?[val<55;55;val] from t

顺便说一句,在55处进行铺垫的另一种方法是使用max /或(|)

update val|55 from t

答案 1 :(得分:0)

我认为@terrylynch很完美。但是有时候,当向量条件太难使用时,您也可以在q-sql语句中使用lambda。由于使用向量条件的原因仅仅是因为列是列表

q)t
val
---
12
10
1
90
73
90
43
90
84
63
q)update newVal:{$[x<55;55;x]}each val from t
val newVal
----------
12  55
10  55
1   55
90  90
73  73
90  90
43  55
90  90
84  84
63  63                          
q)update newVal:{x|55}each val from t
val newVal
----------
12  55
10  55
1   55
90  90
73  73
90  90
43  55
90  90
84  84
63  63