基于另一列的值过滤SQL列

  • 本文关键字:过滤 SQL 于另一 sql
  • 更新时间 :
  • 英文 :


这是一个SQL表" optionValue":

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

我想做的是选择罢工为&lt的每一行;比价格 *(.9(,对于特定的t_date ...例如

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 

注意:每个t_date的价格都不同(差异限制(,每个交易日期都可以应用特定的过滤器吗?

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_DATE进行比较:

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)

最新更新