Database KDB/Q:为什么我在使用矢量条件为符号列表选择数据时出现长度错误?

Database KDB/Q:为什么我在使用矢量条件为符号列表选择数据时出现长度错误?,database,kdb,q-lang,Database,Kdb,Q Lang,我有一张桌子: t3:([]a:2 3 4;b:`CA`AB`) 我有一个问题: select from t3 where b in ?[a=2;`CA`AB;`AB] 邦。。。它给了我长度误差 但这些都是有效的: select from t3 where b in ?[a=2;`CA;`AB] select from t3 where b in `CA`AB 想不出哪里出了问题?请帮忙。。。谢谢。长度错误是由于在向量条件语句中使用不同长度的列表造成的-有关更多详细信息,请参阅。您的另

我有一张桌子:

t3:([]a:2 3 4;b:`CA`AB`)
我有一个问题:

select from t3 where b in ?[a=2;`CA`AB;`AB]
邦。。。它给了我长度误差

但这些都是有效的:

select from t3 where b in ?[a=2;`CA;`AB] 

select from t3 where b in `CA`AB

想不出哪里出了问题?请帮忙。。。谢谢。

长度错误是由于在向量条件语句中使用不同长度的列表造成的-有关更多详细信息,请参阅。您的另一个语句可以工作,因为这两个输出参数是原子的

谢谢,但我想我没有清楚地描述它-我试图根据一个特定列中的不同值获取不同的数据。对于该表来说:t:([]dt:2016.10.01 2016.10.05 2016.10.08 2016.10.20;标志:
AB
AC
BC
CD;val:1 4 2 3)如果日期在2016.10.10之前,我想查询
AB
AC中带有标志的行;否则我想在'CD'中查询出标志。这是否可能在一个where子句中执行此检查?下面是一个示例,说明如何获得所需的结果:
d:t3[`a]!{$[x=2;`AB`CA;`]}'[t3`a];从t3中选择b in'd a
谢谢,这很有效。但是我如何在一个where子句中做到这一点。。。假设这一个有效:从t中选择?[dt中的where标志当x参数计算为false时,向量条件通过将y参数的项替换为z的项来起作用-如果使用了原子,则它们会重复。(vector conditional会将原子视为与参数布尔列表长度相等的列表)为了在一行中实现这一点,您只需将lambda放入where子句中-我使用了一个字典,试图让它更清楚一些。
从t3中选择,其中b位于{$[x=2;`CA`AB;`AB]}[a]
将为您提供所需的结果。