对于每个日期,我需要返回具有最大值的股票代码 例如,这是数据表:
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。
由于
答案 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
或者您可以使用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
注意:这会返回按日期显示的最高价格以及与该价格相关联的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