KX Community

Find answers, ask questions, and connect with our KX Community around the world.
KX Community Guidelines

Home Forums kdb+ select with combinational conditions Re: select with combinational conditions

  • unterrainer_ale

    Member
    May 30, 2023 at 12:00 am

    Something worth adding to the previous answers: If you can transform your filter into a table then the select is much easier. To illustrate

    q)t:flip `date`data!(2023.05.20 2023.05.20 2023.05.20 2023.05.19 2023.05.19 2023.05.19;`a`c`b`b`b`c) 
    q)t 
    date      data 
    --------------- 
    2023.05.20 a 
    2023.05.20 c 
    2023.05.20 b 
    2023.05.19 b 
    2023.05.19 b 
    2023.05.19 c 
    
    q)select from t where ([] date;data) in ([] date:2023.05.20 2023.05.20 2023.05.19;data:`a`b`b) 
    date      data 
    --------------- 
    2023.05.20 a 
    2023.05.20 b 
    2023.05.19 b 
    2023.05.19 b 
    
    q)filter:([] date:2023.05.20 2023.05.19 2023.05.18 2023.05.17; data:(`a`b;enlist `b;`c`d`a;`d`a)) 
    q)filter 
    date        data 
    ----------------- 
    2023.05.20 `a`b 
    2023.05.19 ,`b 
    2023.05.18 `c`d`a 
    2023.05.17 `d`a 
    
    q)ungroup filter 
    date      data 
    --------------- 
    2023.05.20 a 
    2023.05.20 b 
    2023.05.19 b 
    2023.05.18 c 
    2023.05.18 d 
    2023.05.18 a 
    2023.05.17 d 
    2023.05.17 a 
    
    q)t1:ungroup filter 
    q)select from t where ([] date;data) in t1 
    date      data 
    --------------- 
    2023.05.20 a 
    2023.05.20 b 
    2023.05.19 b 
    2023.05.19 b