我正在创建一个交易平台,我需要从一个表中获取以下数据:
date, open price, close price, highest price, lowest price, volume, value of volume.
我创建了这个查询:
Select
min(Price) as Low,
max(price) as High,
sum(Quantity) as Volume,
sum(Price) as Value,
dateadd(DAY, 0, datediff(day, 0, CreatedOn)) as Date,
CompanyIdentifier
from
Transactions
group by
dateadd(DAY, 0, datediff(day, 0, CreatedOn)), CompanyIdentifier
这个查询是为某家公司(由 标识CompanyIdentifier
)在某天(Date)带来最低价、最高价、成交量和成交量价值。我不能在此查询中添加的是开盘价和收盘价那天该公司的价格。基本上是数据按日期升序排列的前 1 个价格。我尝试过并且似乎可以解决问题的是以下查询:
SELECT *
FROM (select Quantity, PRICE, CompanyIdentifier,
dateadd(DAY,0, datediff(day,0, CreatedOn)) AS U,
ROW_NUMBER() over(partition by CompanyIdentifier, dateadd(DAY,0, datediff(day,0, CreatedOn)) order by CREATEDON) AS 'COUN'
from Transactions
) AS AL
where COUN = 1
但这些是 2 个单独的查询,我只想要一个查询。我还尝试添加:
FIRST_VALUE(Price) over (order by price) as first
在第一个查询中,但我收到该函数不在 group by 子句中的错误,我将函数添加到 group by 查询中,我收到以下错误:
窗口函数只能出现在 SELECT 或 ORDER BY 子句中。
那么,如何在第一个查询中添加这两列?