将2个SQL SELECT查询合并为一个查询
我有(2)个表(1)是将2个SQL SELECT查询合并为一个查询,sql,sql-server-2005,Sql,Sql Server 2005,我有(2)个表(1)是价格,另一个是订单 价格: Symbol varchar Open decimal High decimal Low decimal Date DateTime 订单: Ticker varchar Enter decimal EntDate datetime Exit decimal ExtDate datetime 我想要一个查询,可以为我提供特定日期时间范围的所有定价数据以及该符号在同一日期时间范围内的所有订单: SELECT T1.Symbol ,
价格
,另一个是订单
价格:
Symbol varchar
Open decimal
High decimal
Low decimal
Date DateTime
订单:
Ticker varchar
Enter decimal
EntDate datetime
Exit decimal
ExtDate datetime
我想要一个查询,可以为我提供特定日期时间范围的所有定价数据以及该符号在同一日期时间范围内的所有订单:
SELECT
T1.Symbol
, P1.Open
, P1.High
, P1.Low
, P1.Close
, P1.Date
, O1.EntDate
, O1.Enter
, O1.ExtDate
, O1.Exit
FROM Prices AS P1
INNER JOIN ORDERS AS O1 ON O1.Ticker = P1.Symbol
WHERE P1.Date < CONVERT(datetime, '01/01/2012 10:00 AM')
订单表示例
Sym Enter EntDate Exit ExtDate
ABC 1 1/1/2011 10:-00 3 1/1/2011 10:02 AM
ABC 1 1/1/2011 10:-03 3 1/1/2011 10:04 AM
日期和输入日期<2011年1月1日上午10:07且Symbol=ABC的价格和订单查询输出示例
Sym Open High Low Close Date Enter EntDate Exit ExtDate
ABC 1 3 1 2 1/1/2011 10:01 AM 1 1/1/2011 10:-00 3 1/1/2011 10:02 AM
ABC 1 3 1 2 1/1/2011 10:02 AM 1 1/1/2011 10:-03 3 1/1/2011 10:04 AM
ABC 1 3 1 2 1/1/2011 10:03 AM
ABC 1 3 1 2 1/1/2011 10:04 AM
ABC 1 3 1 2 1/1/2011 10:05 AM
ABC 1 3 1 2 1/1/2011 10:06 AM
ABC 1 3 1 2 1/1/2011 10:07 AM
你需要有P1.Symbol
而不是T1。Symbol考虑只加入与
价格
行相同日期的订单:
from Prices as P1
left join
Orders as O1
on O1.Ticker = P1.Symbol
and p1.Date <= O1.ExtDate and O1.ExtDate < dateadd(day,1,p1.Date)
价格为P1时的
左连接
订单为O1
在O1.Ticker=P1.Symbol上
p1.Date看起来需要在O1.EntDate
或O1.ExtDate
上添加一个额外的过滤器,以限制范围,但不确定“我为每行价格数据重复的订单获取多个列表”是什么意思,以及为什么这是一个问题。这是预期与联合。可能会提供一些示例数据和期望的结果。我会给你上面的示例输出…我会给你上面的示例输出。。。我尝试了太多的数据来填满窗口。。本质上,问题在于订单数据本身重复,这会提供重复的数据,这是一个问题。对于一个充满价格数据的表,但只有几个记录/行包含订单信息的表,联接可能不起作用。您只需要为每个表提供几行示例数据,足以说明问题,然后告诉我们您想要的结果应该是什么样子。给出的示例数据和输出,谢谢..我将不得不执行两个sql命令,并将它们合并到我的表示层中,因为我将继续使用多个命令填充sql表的每个记录/行。。。这使我可以重复订购到定价日期=orders EntDate
from Prices as P1
left join
Orders as O1
on O1.Ticker = P1.Symbol
and p1.Date <= O1.ExtDate and O1.ExtDate < dateadd(day,1,p1.Date)