Как выбрать список акций (AAPL, MSFT и т. Д.) И вернуть значения Open, High, Low, Close, Volume in day для EACH.
Я изучил временные таблицы, cte's и объединения, но не уверен, какой подход, даже если это должно быть сделано в БД (а не через обход веб-сервера).
SELECT ContractIDs from Contracts as XYZ [= 1,2,3 etc]
затем для каждого из вышеперечисленных:
SELECT
c1.utc as FirstTradeInPeriod,
c2.utc as LastTradeInPeriod,
c1.Price AS [Open],
InnerSelect.High,
InnerSelect.Low,
c2.Price AS [Close],
InnerSelect.Volume
FROM ( SELECT
Min(dbo.Trades.ID) AS openid,
Max(dbo.Trades.ID) AS closeid,
Min(dbo.Trades.Price) AS Low,
Max(dbo.Trades.Price) AS High,
Sum(dbo.Trades.NumberOfContracts) AS Volume
FROM dbo.Trades
WHERE dbo.Trades.ContractID = XYZ
AND dbo.Trades.UTC > DATEADD(day, -7 , SYSDATETIME())
GROUP BY DATEPART(dayofyear, dbo.Trades.UTC)
) AS InnerSelect
INNER JOIN dbo.Trades c1 ON c1.ID = InnerSelect.openid
INNER JOIN dbo.Trades c2 ON c2.ID = InnerSelect.closeid
Результаты за 7 дней для каждой из, скажем, 10 акций дают таблицу из 70 строк, которые затем будут сгруппированы (для диаграммы) веб-сервером. Это лучшая стратегия или было бы лучше, чтобы веб-сервер повторял каждый?