найти отдельные значения из списка в другой таблице, используя каждый kdb - PullRequest
0 голосов
/ 28 апреля 2020

Я нашел отличное b_market_order_no, где event = `OvernightOrder из таблицы tb, используя любой метод

b_mkt_lst: select `g#b_market_order_no from tb where event=`OvernightOrder
b_mkt_lst: select distinct b_market_order_no from tb where  event=`OvernightOrder

Для всех записей, имеющих b_market_order_no в этом списке, нужно найти b_orig_date для этого b_market_order_no в другой таблице называется tbp, я пробую эти два метода:

select b_orig_date from tbp where b_market_order_no in b_mkt_lst
select b_orig_date from tbp each b_mkt_lst

Первый дает мне несовместимую длину, второй не распознает b_orig_date, но «select b_orig_date from tbp» действительно возвращает результаты.

1 Ответ

1 голос
/ 28 апреля 2020

Делая некоторые предположения о ваших данных:

q)t:([]c1:`a`b`c;c2:1 2 3)

/your length error is because you're comparing a list (b_market_order_no col) to a table (b_mkt_lst)
/similar to
q)select from t1 where c2 in select distinct c2 from ([]c2:1 3)
'length                        

/instead, use exec to extract a list (thus comparing a list to a list)
q)select from t1 where c2 in exec distinct c2 from ([]c2:1 3)
c1 c2
-----
a  1
c  3

/or turn the column(s) into a table to compare table to table
/(this is more useful when there's more than one column to compare)
q)select from t1 where ([]c2) in select distinct c2 from ([]c2:1 3)
c1 c2
-----
a  1
c  3
...