SQL查询帮助从2个表中获取最后的订单日期

时间:2011-07-04 12:45:36

标签: sql

我有下表

Orders_All
Account

订单全部包含每个订单行数千条记录,2条记录包含order_dateorder_account_id

这需要加入帐户以便其他查询也可以运行,但我想要一个显示account_id和最后订单日期但每个帐户只有一条记录的报告。

如何创建查询以解决此问题。

3 个答案:

答案 0 :(得分:1)

SELECT account_id, MAX(order_date) as last_order_date FROM Orders_All INNER JOIN Account ON order_account_id = account_id GROUP BY account_id

这将为您提供帐户ID和最大(未来最远)日期。 GROUP BY限制了它 - 它是每个“account_id”的最大日期。

如果某个帐户没有订单且您仍希望显示该帐户,并在日期列中显示NULL,请使用RIGHT OUTER JOIN代替INNER JOIN

答案 1 :(得分:0)

试试这个:

Select accound_id,Max(OrderDate) from Order_All t1,AccountID t2
where t1.AccountID = t2.AccountID
group by account_ID

答案 2 :(得分:0)

为您要显示的列替换*或保留它并尝试下一个代码。

select distinct * from Account A
join Orders_All O on O.order_account_id = A.account_id
--so far we have join both table, so we need the last order date from it
where o.order_date in (select MAX(order_date) from Orders_All)
--in where clause im getting max order date from table Orders_All
  

但如果我想要客户的最后订单日期呢?

那么你可以写这个(不是最好但是有效):

select * 
  from Account A
  join (select account_id as Acc_id, MAX(order_date) as Date 
          from Orders_All 
         group by account_id) 
    as OD on A.account_id = OD.Acc_id