我有一个包含多个列的表("ibmqt"),我想添加一个新列,其中包含布尔值,指示每一行是否有一列("bid")大于或等于另一列("问").
到目前为止,我最成功的尝试是:
ibmqt: update (pricecross:select bid>=ask from ibmqt) from ibmqt
Run Code Online (Sandbox Code Playgroud)
但是,这导致以下结果:
time sym bid ask bsize asize pricecross
----------------------------------------------------
00:00:59.063 IBM 43.53 43.57 10000 9000 (,`ask)!,0b
00:01:03.070 IBM 43.54 43.59 6500 3000 (,`ask)!,0b
00:02:31.911 IBM 43.56 43.6 500 4500 (,`ask)!,0b
00:03:43.070 IBM 43.56 43.56 10000 2500 (,`ask)!,1b
00:06:01.170 IBM 43.54 43.56 8500 4500 (,`ask)!,0b
00:06:11.081 IBM 43.56 43.58 500 1500 (,`ask)!,0b
00:08:15.126 IBM 43.55 43.57 1500 9000 (,`ask)!,0b
Run Code Online (Sandbox Code Playgroud)
显然,在"pricecross"栏中,我只想要0,0,0,1,0等.
有什么建议?
不需要嵌套选择.这将满足您的需求:
ibmqt:update pricecross:bid>=ask from ibmqt
Run Code Online (Sandbox Code Playgroud)
或者您可以更新ibmqt到位:
update pricecross:bid>=ask from `ibmqt
Run Code Online (Sandbox Code Playgroud)
q是一种数组语言,因此bid>=ask成对比较两列并返回一个布尔列表.这将说明这个想法:
1 2 3 >= 0 2 4 / 110b
Run Code Online (Sandbox Code Playgroud)
然后将布尔值列表分配给新列pricecross.
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |