2010-11-22 119 views
1

我想加入一個表變量表和另一個表。SQL JOIN WITH WHERE

@ProcessTbl  OrderDetail 
Order   ID 
Status   Order 
Approved   DateTime 
Domain   Status 

OrderDetail表具有多個相同順序的列。例如

ID Order DateTime Status 
    1  1 11-17-10 Recived 
    2  1 11-18-10 Processing 
    3  1 11-19-10 shipped 

,所以我想要的加盟做的是採取訂單編號@processtbl(表變量) 和MAX(id)取得在這種情況下日期時間最大id爲3

所以我的結果應該是

order status approved domain datetime 
1  shipped true  finance 11-19-10 




    SELECT t.order 
      ,[od.DateTime] 
      ,t.Status 
      ,t.Domain 
     ,t.Approved  
    FROM @ProcessTable t 
    JOIN OrderDetail od ON od.order= t.order 
    WHERE od.ID = (SELECT MAX(id) FROM orderdetail WHERE od.order = t.order) 
    ORDER BY od.[DateTime], Approved ASC 

但我仍然得到重複的記錄,看起來是joning兩個表。 我如何獲得不同的記錄?

+1

`job`是不是在你的架構,哪裏是從何而來? – RedFilter 2010-11-22 19:13:14

回答

1

只是想一想,你有沒有試圖執行SELECT DISTINCT

+0

它不會返回任何東西,當我使用不同的 – Pinu 2010-11-22 19:08:34

+2

@Pinu,這沒有任何意義。如果沒有重複,那麼它應該返回到之前的狀態...... – 2010-11-22 19:13:15

4
select p.order, od.status, p.approved, p.domain, od.datetime 
from @ProcessTable p 
inner join (
    select Order, max(ID) as MaxID 
    from OrderDetail 
    group by Order 
) odm 
inner join OrderDetail od on odm.Order = od.Order 
    and odm.MaxID = od.ID 
+0

我收到以下錯誤:'。'附近的語法錯誤。 – Pinu 2010-11-22 20:26:21

0
WHERE od.ID = (SELECT MAX(id) FROM orderdetail WHERE od.order = t.order) 

的od.order不引用在子查詢的OrderDetail表,但外面的實例。

試着這麼做:WHERE od.ID = (SELECT MAX(id) FROM orderdetail as od1 WHERE od1.order = t.order)