我想为我的表的其中一列创建一个嵌套列表,但是我不确定要使用的语法。例如,如果我有下表...
q)t:([]submitter:`A`B`C; code:3?100; status:110b)
q)t
submitter code status
---------------------
A 2 1
B 39 1
C 64 0
我想做类似下面的事情。但是,这会将额外的列x
添加到表中并将值放在此处,而不是为code
列创建复合列表。...
q)update code,:77 from t where status<>1b
submitter code status x
------------------------
A 2 1
B 39 1
C 64 0 77
如果它是一个具有单个值的字典,我将执行以下操作...
q)d:`sumbitter`code`status!(`A;1?100;1)
q)d
sumbitter| `A
code | ,88
status | 1
q)d[`code],:99
q)d
sumbitter| `A
code | 88 99
status | 1
如何在具有多行的表上执行相同的操作?
我想要的输出看起来像...
q)t
submitter code status
----------------------
A 2 1
B 39 1
C 64 77 0
答案 0 :(得分:2)
这也将为您做到,不需要您预先更改类型
q)update code:(code,'(77;())status) from t
submitter code status
---------------------
A ,12 1
B ,10 1
C 1 77 0
答案 1 :(得分:1)
您无法像您打算的那样即时更改code
列的列类型。
相反,您首先必须将列code
的类型更新为long
而不是long
的列表:
q)meta t
c | t f a
---------| -----
submitter| s
code | j
status | b
更新类型:
t: update enlist each code from t
现在code
的类型为"J"
,它的确是long
的列表:
q)meta t
c | t f a
---------| -----
submitter| s
code | J
status | b
然后您可以像这样将元素添加到code
:
t:update code:{x,77} each code from t where status<>1b
q)t
submitter code status
----------------------
A ,2 1
B ,39 1
C 64 77 0