[英]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.