Supongo que tengo las siguientes dos tablas

Tabla1

symbol ric
--------------  
AAA    AATSA.AS   
AALB   AALB.AS  
AJAX   AJAX.AS  
AMG    AMG.AS 

Tabla2

Title               Ticker
ARCELORMITTAL REG   AAA.AS  
TC EURO EQ          TEET.AS
HAL TRUST           HAL.AS 
TETRAGON FIN GROUP  TFG.AS

¿Cuál es la consulta que necesito para obtener todos los símbolos de Table1.que coinciden parcialmente con Table2.Ticker?

Por ejemplo, en las dos tablas siguientes, debería obtener AAA de Table1.symbol ya que coincide parcialmente con AAA.AS de Table2.Ticker

Gracias

kdb
0
Kareem 18 ago. 2016 a las 07:10

2 respuestas

La mejor respuesta

Supongo que la única lógica aquí es que Table2.Ticker se puede dividir por . y eso se puede comparar con Table1.symbol.

En primer lugar, puede dividir 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

Aunque podría haber llamado fragment symbol en su lugar, lo tengo como una columna separada para ilustración. También necesita la columna fragment para unirse en Table1:

q)update fragment:symbol from `Table1
`Table1
q)Table1
symbol ric      fragment
------------------------
AAA    AATSA.AS AAA
AALB   AALB.AS  AALB

Así que ahora podemos hacer un uj < / a> o lj - debería buscarlos en las páginas de referencia. Solo para usar uj en este caso para ver todo el asunto:

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

En una nota al margen ... Unirse a los símbolos de Bloomberg y RIC es una pesadilla :-) En última instancia, tendrá que tener tablas que unan los tickers de ISINS, RIC y Bloomberg teniendo en cuenta que los RIC y los tickers cambian tiempo extraordinario.

3
Thomas Smyth 12 dic. 2017 a las 15:18

En los casos en que no haya una demarcación sobre cómo dividir el símbolo para hacer la coincidencia exacta, es posible que desee buscarlo usando like:

q)select from t1 where any each t2[`Ticker] like/:(string[symbol],\:"*")
symbol ric
---------------
AAA    AATSA.AS

Aunque no es una solución ideal y debe evitarse entendiendo los datos y dividiendo los símbolos para usar las combinaciones como se describe en la respuesta aceptada.

0
nyi 5 jun. 2018 a las 01:12