每日最高价值的往返机票

时间:2013-02-27 18:32:38

标签: sql sql-server-2012 max

对于每个日期,我需要返回具有最大值的股票代码 例如,这是数据表:

dt_date     ticker      price  
20121201    A           5   
20121201    B           7  
20121201    C           6  
20121202    A           10  
20121202    B           8  
20121202    C           7

所以我的预期输出是

20121201   C            7  
20121202   A            10

我尝试了一些最大但没有真正到达任何地方的东西,任何人都可以帮忙吗? 我正在使用SQL Server 2012 btw。

由于

2 个答案:

答案 0 :(得分:0)

您应该能够使用子查询:

select t1.dt_date,
  t1.ticker,
  t1.price
from yourtable t1
inner join
(
  select max(price) maxPrice, dt_date
  from yourtable
  group by dt_date
) t2
  on t1.dt_date = t2.dt_date
  and t1.price = t2.maxprice

请参阅SQL Fiddle with Demo

或者您可以使用row_number()

select dt_date, ticker, price
from
(
  select dt_date, ticker, price,
    row_number() over(partition by dt_date order by price desc) rn
  from yourtable
) src
where rn = 1

请参阅SQL Fiddle with Demo

注意:这会返回按日期显示的最高价格以及与该价格相关联的ticker

答案 1 :(得分:0)

这对你来说应该没问题!

Select dt_date,ticker,price from table t
 where t.price = 
     (select ticker,price from table t2 where t.dt_date=t2.dt_date group by ticker having max(price))
 group by dt_date

的Davide