Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将2个SQL SELECT查询合并为一个查询_Sql_Sql Server 2005 - Fatal编程技术网

将2个SQL SELECT查询合并为一个查询

将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 ,

我有(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
   , 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)