簡體   English   中英

將2個SQL SELECT查詢合並為一個

[英]Combining 2 SQL SELECT queries Into one

我有(2)個表(1)是Prices ,另一個是Orders

價格:

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    Open   High    Low    Close    Date
 ABC     1         3         1           2        1/1/2011 10:01 AM
 ABC     1         3         1           2        1/1/2011 10:02 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
 ABC     1         3         1           2        1/1/2011 10:08 AM
 ABC     1         3         1           2        1/1/2011 10:09 AM
 ABC     1         3         1           2        1/1/2011 10:10 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  

日期和查詢日期<1/1/2011 10:07 AM的價格和訂單查詢的示例輸出,且符號= 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

考慮只加入與Price行同一天的訂單:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM