我有下表
Orders_All
Account
订单全部包含每个订单行数千条记录,2条记录包含order_date
和order_account_id
。
这需要加入帐户以便其他查询也可以运行,但我想要一个显示account_id和最后订单日期但每个帐户只有一条记录的报告。
如何创建查询以解决此问题。
答案 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