2010-11-22 88 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)