假设我有以下两个表
表1
symbol ric
--------------
AAA AATSA.AS
AALB AALB.AS
AJAX AJAX.AS
AMG AMG.AS
表2
Title Ticker
ARCELORMITTAL REG AAA.AS
TC EURO EQ TEET.AS
HAL TRUST HAL.AS
TETRAGON FIN GROUP TFG.AS
为了获得与Table2.Ticker部分匹配的所有Table1.symbol,我需要什么查询?
例如,在以下两个表中,我应该从 Table1.symbol 获得 AAA ,因为它与 AAA.AS 部分匹配的 Table2.Ticker
由于
答案 0 :(得分:3)
我假设这里唯一的逻辑是Table2.Ticker
可以被.
拆分,并且可以与Table1.symbol
匹配。
首先,您可以拆分Ticker:
q)update fragment:`$("." vs' string Ticker)[;0] from `Table2
`Table2
q)Table2
Title Ticker fragment
----------------------------------
ARCELORMITTAL REG AAA.AS AAA
TC EURO EQ TEET.AS TEET
虽然我可以调用fragment
symbol
而是将其作为单独的列进行说明。您还需要fragment
列加入Table1
:
q)update fragment:symbol from `Table1
`Table1
q)Table1
symbol ric fragment
------------------------
AAA AATSA.AS AAA
AALB AALB.AS AALB
现在我们可以执行uj
或lj
- 您应该在参考页面上查看这些内容。只是在这种情况下使用uj
来查看整个shebang:
q)(`fragment xkey Table1) uj (`fragment xkey Table2)
fragment| symbol ric Title Ticker
--------| -----------------------------------------
AAA | AAA AATSA.AS ARCELORMITTAL REG AAA.AS
AALB | AALB AALB.AS
TEET | TC EURO EQ TEET.AS
在旁注...... 加入Bloomberg和RIC符号是一场噩梦:-)最终,您必须拥有连接ISINS,RIC和Bloomberg代码的表格。 RIC和代码随着时间的推移会发生变化。
答案 1 :(得分:0)
如果没有关于如何拆分符号以进行完全匹配的划分,您可能希望使用like
进行搜索:
q)select from t1 where any each t2[`Ticker] like/:(string[symbol],\:"*")
symbol ric
---------------
AAA AATSA.AS
虽然它不是理想的解决方案,但应该通过理解数据并拆分符号来避免使用连接,如接受的答案中所述。