如何在Mysql中获取每个客户的最后交易详细信息?

问题描述 投票:0回答:4

我正在尝试从 Mysql 数据库获取每个客户的最新交易,其中每个客户可能有不同数量的交易记录。

这里Mysql表:

enter image description here

这个表我已经提到了具有粗体(样式)的行,这些 粗体行是最后的交易记录。我想要每个客户最后的交易。

我除了答案低于一个。

enter image description here

我需要mysql查询这个选定的记录。

mysql mysql-workbench
4个回答
7
投票

您需要使用交易日期的

MAX
来查找最近的交易。由于这是一个聚合函数,您还需要
GROUP BY
您的
cus_id
。然后,此结果会为您提供客户的最新日期,以便您可以根据该
cus_id
tranc_date
组合连接其余数据。

查询将如下所示:

SELECT cus_tranc.cus_id,
       cus_tranc.tranc_amt,
       cus_tranc.tranc_type,
       cus_tranc.tranc_date
FROM cus_tranc 
INNER JOIN (
  SELECT cus_id,
         MAX(tranc_date) AS 'tranc_date'
  FROM cus_tranc
  GROUP BY cus_id) max_tranc ON cus_tranc.cus_id = max_tranc.cus_id AND cus_tranc.tranc_date = max_tranc.tranc_date

您可以在这个 SQL Fiddle 中看到结果。


3
投票
SELECT cus_id,
       tranc_amt,
       tranc_type,
       MAX(tranc_date) AS 'tranc_date'
FROM cus_tranc
GROUP BY cus_id
ORDER BY MAX(tranc_date)

0
投票
SELECT cus_id,tranc_amt,tranc_type,tranc_date    
FROM cus_tranc    
WHERE tranc_date IN (SELECT MAX(tranc_date)
                     FROM cus_tranc
                     GROUP BY cus_id);

0
投票

一个非常简单的查询就可以解决问题,

SELECT cus_id, 
tranc_amt,
tranc_type,
MAX(tranc_date) as "tranc_date" 
FROM cus_tranc
GROUP BY cus_id
;

对客户 ID 进行简单分组,然后仅从每个客户 ID 的所有可能日期中选择最大值。

© www.soinside.com 2019 - 2024. All rights reserved.