2013-05-30 29 views
3

我想在我的select语句中定义一些变量。例如,在这里我想定义买价,卖价为存储在表中的原始值的修正值(此代码将无法正常工作):是否可以在kdb select语句中设置和重用变量?

select ts,ticker,bid:(bid1_price*1e-4),ask:(sl1_price*1e-4),wt:((next ts) - ts),spread:(ask - bid),wtspread:(((next ts) - ts) wavg (ask - bid)) from md where... 

我如何在select语句定义变量?

回答

2

创建您的出价和先问列,那么在更新使用它们...

update wt:((next ts) - ts), spread:(ask - bid), wtspread:(((next ts) - ts) wavg (ask - bid)) by date from select ts, ticker, bid:(bid1_price*1e-4), ask:(sl1_price*1e-4) from md where... 
+0

这个数据库有多个日期。我在运行查询时注意到的一个区别是,每个日期的最后一个记录的wt字段都填充了两个连续日期中时间戳的差异,而在我的原始查询中它被设置为null。 –

+0

编辑 - 不知道为什么我给了不同的结果,但新的应该工作 – mnestor

+0

完美。因此,kdb在默认情况下在select语句中按日期运行集合动词(我没有在我的原始选择中使用任何按日期从句),而使用更新指令不会。我猜更新实施不同? –

相关问题