SQL-соединение для получения имени поля - PullRequest
0 голосов
/ 02 апреля 2012

У меня следующий запрос, и я хочу написать объединение, чтобы указать направление тренда на основе идентификатора.

stock_trends
------------
stock_id
trend_id
direction_id
timestamp
price
breakout_price


trend_direction
---------------
id
direction


select s.*, v.latest_trend_date, 
dbo.GetStockAverageVolume(s.id, latest_trend_date, GETDATE()) 
as avg_volume from stocks s
join(select stock_id, MAX(timestamp)as latest_trend_date from stock_trends st
group by st.stock_id) v on v.stock_id = s.id
where 
(select top 1 trend_id from stock_trends 
where s.id = stock_trends.stock_id order by [timestamp] desc) = 
@trend_id and s.market_id = @market_id
and dbo.GetStockAverageVolume(s.id, latest_trend_date, GETDATE()) > 300000
order by latest_trend_date desc

Как изменить указанный выше запрос, чтобы получить направление тренда на основе direction_id в таблице stock_trends?

Например:

select s.*, v.latest_trend_date, 
dbo.GetStockAverageVolume(s.id, latest_trend_date, GETDATE()) 
as avg_volume, **direction** from stock s
...
...
...

Чувак, я плох в присоединении!

Большое спасибо.

1 Ответ

0 голосов
/ 02 апреля 2012

Это должно сработать, но я думаю, что ваш запрос может быть оптимизирован

 select stock_id, td.direction, MAX(timestamp) as latest_trend_date
 from stock_trends st
 join trend_direction td on st.direction_id = td.id
 group by st.stock_id, td.direction

о да и добавить v.direction в основной список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...