我有一个表,其中的列符号为px,大小为px
t:([] sym:`GOOG`IBM`APPL; px:10 20 30; size:1000 2000 3000)
现在,如果我将sym列分配给变量ab
ab:`sym
然后,在查询下面运行时未提供正确的输出
select [ab],px from t where [ab]=`IBM / returns empty table
?[t;(=;`sym;`IBM);0b; [ab]`px![ab]`px]/ type
答案 0 :(得分:2)
上面的答案很接近,但是有一些事情要考虑。您正在运行的查询基本上是:
q)parse"select sym,px from t where sym=`IBM"
?
`t
,,(=;`sym;,`IBM)
0b
`sym`px!`sym`px
这里的关键是,
通常表示需要征集一个术语。另外,对于列名的字典,您只需将值ab
与px
连接起来。考虑到所有这些,我已经在上面修改了您的查询:
q)?[t;enlist(=;`sym;enlist`IBM);0b;(ab,`px)!ab,`px]
sym px
------
IBM 20
假设where
子句也应引用ab
:
q)?[t;enlist(=;ab;enlist`IBM);0b;(ab,`px)!ab,`px]
sym px
------
IBM 20