いくつかの列を合計し、他の列の最大値と別のテーブルから対応する値を取得するように、SQL からいくつかのデータをクエリしようとしています。例えば、
|テーブル1|
|id| |shares| |date|
1 100 05/13/16
2 200 05/15/16
3 300 06/12/16
4 400 02/22/16
|テーブル2|
|id| |price|
1 21.2
2 20.2
3 19.1
4 21.3
出力を次のようにします。
|shares| |date| |price|
1000 06/12/16 19.1
株式は合計され、日付は max(date) で、価格は対応する max(date) での価格です。
これまでのところ、私は持っています:
select
id, stock, side, exchange,
max(startdate), max(enddate),
sum(shares), sum(execution_price * shares) / sum(shares),
max(limitprice), max(price)
from
table1 t1
inner join
table2 t2 on t2.id = t1.id
where
location = 'CHICAGO'
and startdate > '1/1/2016'
and order_type = 'limit'
group by
id, stock, side, exchange
ただし、これは次を返します。
|shares| |date| |price|
1000 06/12/16 21.3
これは max(date) に対応する価格ではありません。