对于每个日期,我需要返回具有最大值的代码,例如这是数据表:
dt_date 股票价格 20121201一5 20121201乙7 20121201 C 6 20121202一10 20121202乙8 20121202 C 7
所以我的预期输出是
20121201 C 7 20121202一10
我已经尝试了一些最大的东西,但没有真正到达任何地方,有人可以帮忙吗?我正在使用 SQL Server 2012 顺便说一句。
谢谢
对于每个日期,我需要返回具有最大值的代码,例如这是数据表:
dt_date 股票价格 20121201一5 20121201乙7 20121201 C 6 20121202一10 20121202乙8 20121202 C 7
所以我的预期输出是
20121201 C 7 20121202一10
我已经尝试了一些最大的东西,但没有真正到达任何地方,有人可以帮忙吗?我正在使用 SQL Server 2012 顺便说一句。
谢谢
您应该能够使用子查询:
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
与该价格相关联的价格。
这对你来说应该没问题!
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
戴维德