-2

日付ごとに、最大値のティッカーを返す必要があります。たとえば、これはデータテーブルです。

dt_dateティッカー価格  
20121201 A 5   
20121201 B 7  
20121201 C 6  
20121202 A 10  
20121202 B 8  
20121202 C 7

だから私の期待される出力は

20121201 C 7  
20121202 A 10

私はmaxでいくつかのものを試しましたが、実際にはどこにも行きません、誰かが助けることができますか?私はSQLServer2012を使用しています。

ありがとう

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 FiddlewithDemoを参照してください

または、次を使用できます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 FiddlewithDemoを参照してください

注:これにより、日付ごとの最大価格と、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 に答える