根据另一列的值筛选SQL列

根据另一列的值筛选SQL列,sql,Sql,以下是SQL表选项值: t_date strike 1/1/2011 89 1/1/2011 105 1/2/2011 70 1/2/2011 82 和另一个表PriceValue: t_date price 1/1/2011 100 1/2/2011 93 我想做的是,为特定的t_日期选择罢工

以下是SQL表选项值:

t_date      strike    
1/1/2011       89        
1/1/2011       105
1/2/2011       70
1/2/2011       82
和另一个表PriceValue:

t_date        price    
1/1/2011      100        
1/2/2011      93
我想做的是,为特定的t_日期选择罢工
t_date     price    strike      limit
1/1/2011   100       89         (100*.9 = 90) , 89 < 100
1/2/2011   93        70         (93*.9 =83.7) , 70 < 83.7
1/2/2011   93        82         (93*.9 =83.7) , 82 < 83.7 
注意:每个交易日都有不同的价差限制,是否可以为每个交易日应用特定的过滤器

select * from option_value ;

  t_date  | price | strike 
----------+-------+--------
 1/1/2011 |   100 |     89
 1/1/2011 |       |    105
 1/2/2011 |    93 |     95
 1/2/2011 |       |     82
(4 rows)
因此,您需要将每一行与具有相同t_日期的行进行比较:

select * from option_value v1 join option_value v2 on v1.t_date=v2.t_date where v2.strike < (v1.price * 0.9);

  t_date  | price | strike |  t_date  | price | strike 
----------+-------+--------+----------+-------+--------
 1/1/2011 |   100 |     89 | 1/1/2011 |   100 |     89
 1/2/2011 |    93 |     95 | 1/2/2011 |       |     82
(2 rows)

应该能够得到你想要的结果:WHERE strike