我有一个包含sym和px列的表
t:([] sym:`GOOG`IBM`APPL; px:1000 2000 3000)
现在,如果我把sym列赋给变量ab
ab:`sym
select ab from t / 'rank select `ab from t / 'rank
我需要根据条件将列名保存到变量中,然后对分配给变量的列运行select查询。
有几种方法可以实现这一点。如果表没有键,那么只需使用 # 使用该列名(请注意,左侧参数必须是列表):
#
enlist[ab]#t sym ---- GOOG IBM APPL
另一种方法是使用函数形式,例如:
q)?[t;();0b;enlist[ab]!enlist ab] sym ---- GOOG IBM APPL
您可以从解析树中获取此查询的形式,例如:
q)parse"select ab from t" ? `t () 0b (,`ab)!,`ab
q){?[x;();0b;{x!x}(),y]}[t;ab] sym ---- GOOG IBM APPL