-2

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

dt_date 股票价格  
20121201一5   
20121201乙7  
20121201 C 6  
20121202一10  
20121202乙8  
20121202 C 7

所以我的预期输出是

20121201 C 7  
20121202一10

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

谢谢

4

2 回答 2

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

或者您可以使用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

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

于 2013-02-27T21:09:45.237 回答
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

戴维德

于 2013-02-27T21:10:11.727 回答