2011-08-28 65 views
0

我有(2)表(1)爲Prices,另一個是Orders結合2 SQL SELECT查詢轉換爲一個

價格:

Symbol varchar 
Open decimal 
High decimal 
Low decimal 
Date DateTime 

訂單:

Ticker varchar 
Enter decimal 
EntDate datetime 
Exit decimal 
ExtDate datetime 

我想要一個查詢,給我所有的特定日期時間範圍的定價數據和所有的o該符號爲同一日期時間範圍rders:

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 

示例輸出用於價格和訂單查詢與日期和EntDate < 1/1/2011上午10點07和符號= 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 
+0

看起來你需要在'O1.EntDate'添加額外的過濾器或'O1.ExtDate'到限制範圍,但不知道你的意思是什麼「我得到多個價格數據行重複的訂單列表」以及爲什麼這是一個問題。預計與加入。也許提供一些示例數據和期望的結果。 –

+0

我會給你上面的示例輸出... – CraigJSte

+0

我會給你上面的示例輸出...我嘗試了太多的數據來填充窗口..本質上問題是訂單數據重複自身,它提供了重複的數據一個問題。也許連接將不會有一張桌子充滿價格數據,但只有少量記錄/線與訂單信息。 – CraigJSte

回答

1

你需要有P1.Symbol 和n OT T1.Symbol

+0

我認爲這沒有幫助。 – CraigJSte

0

考慮作爲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) 
+0

我將不得不做兩個sql命令,並將它們合併到我的表示層中,因爲我繼續用多個命令填充我的sql表的每條記錄/行......這使我重複訂單,直到定價日期=訂購EntDate – CraigJSte