我正在处理最终将用作报告记录来源的查询。
我有一个客户和订单表。我想在查询中显示customer_id,order_id和order_date,但我只想显示与每个客户的最早订单日期相关联的数据。基本上,我需要显示order_id字段而不将其包含在group by子句中。如果我将它包含在group by子句中,我会得到比我想要的更多的记录。根据我的研究,下面的代码将在mysql中使用,但不能在ms访问。
选择customer.customer_id,order.order_id,min(order.order_dt)
来自customer.customer_id = order.customer_id
上的客户内部联接订单按customer.customer_id分组
我尝试在子查询中按order_id进行分组,然后按客户排序然后按日期排序,然后使用外部查询中的第一个函数。不幸的是,第一个功能并不像宣传的那样有效。
非常感谢任何帮助!
答案 0 :(得分:0)
这对你有用吗?它应该按照每个客户的订单日期提出最早的订单。如果客户的最早订单日期有多个订单,则会显示所有订单,因此请记住。
SELECT c.customer_id, o.order_id, o.order_dt
FROM customers AS c INNER JOIN (orders AS o INNER JOIN (SELECT customer_ID, MIN([order_dt]) AS MinOrder_dt FROM Orders GROUP BY customer_id) AS d ON (o.Customer_ID = d.customer_id) AND (o.[order_dt] = d.MinOrder_dt)) ON c.customer_id = o.customer_id;
我只使用customer_id和min order_dt派生一个表,并将客户和订单加入到该表中,只显示最早的订单。