KX Community

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

Home Forums kdb+ Referencing new column

  • Referencing new column

    Posted by powerpeanuts on November 16, 2021 at 12:00 am

    For example:

    t:([] name:`Dent`Beeblebrox`Prefect; iq:98 42 126)

    select name, iq2:iq%100 from t where iq2>1

     

    I would like to reference the newly created “iq2” column in the where clause, but the above command fails. How to modify it to make it work?

     

    powerpeanuts replied 2 months ago 3 Members · 2 Replies
  • 2 Replies
  • davidcrossey

    Member
    November 16, 2021 at 12:00 am

    Hi powerpeanuts,

    You would need to add your new column first, before trying to use it in the where clause. For example:

    q)t:([] name:`Dent`Beeblebrox`Prefect; iq:98 42 126) 
    q)select name, iq2 from (update iq2:iq%100 from t) where iq2>1 
    name    iq2 
    ------------ 
    Prefect 1.26

    Thanks for posting your question on the KX Community. Great username too!

    Kind regards,

    David

  • cillianreilly

    Member
    November 16, 2021 at 12:00 am

    As David mentioned, you can’t reference iq2 before you create it. If your where clause isn’t too wieldy, you can just include that in the qsql query to create column iq2:

    q)select name,iq2:iq%100 from t where 1<iq%100 
    name    iq2 
    ------------ 
    Prefect 1.26

    This does the calculation twice, so be careful with particularly heavy where conditions.

Log in to reply.