2014-05-21 29 views
2

我想從Mysql數據庫中獲取每個客戶的最新交易,其中每個客戶可能有不同數量的交易記錄。如何獲取Mysql中每個客戶的最後交易詳情?

這裏MySQL表:

enter image description here

此表我已經提到它有大膽的(風格)的行,這些 大膽行是最後一次交易records.I希望每一個客戶最後交易。

我除了答案是低於一個。

enter image description here

我需要爲這個選定的記錄MySQL查詢。

+1

你嘗試了一些作爲max(),然後在查詢中使用? –

+0

是的,您將需要使用最大聚合,然後按您想要顯示的其餘列進行分組 – Bobby

+0

如何獲取客戶表中每個客戶的最後兩條交易記錄? 當我試圖讓過去的5個交易細節爲每一位顧客,我得到這個錯誤 #1242 - 子查詢返回多個1行 查詢: SELECT cus_id, tranc_amt, tranc_type, tranc_date FROM cus_tranc其中cus_id =(從客戶中選擇不同的cus_id) ORDER BY tranc_date DESC LIMIT 5 –

回答

1
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) 
+1

OP要求任何類型的用戶進行最後的交易。這隻會爲客戶提供最近一次交易,交易類型和交易類型相同,並且很可能會返回所有表(事實上,這是通過OP的示例數據來完成的)。 – ydaetskcoR

+0

是的你是對的,我已經編輯了我的答案。謝謝 – Bobby

+0

謝謝Bobby,我怎麼能得到客戶表中每個客戶的最後N個交易記錄 –

3

您會希望以您交易日期的MAX來查找最近的交易。由於這是一個綜合功能,您還需要GROUP BY您的cus_id。此結果會爲您提供客戶的最新日期,以便您可以將其餘的數據與cus_idtranc_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 

你可以看到this SQL Fiddle的這個結果。

+0

謝謝ydaetskcoR,我怎樣才能得到客戶表中的每個客戶的最後兩個交易記錄? –

+0

糾正我,如果我錯了,但是 - 這個答案是不正確的,你可以在SQL小提琴中看到,你得到17-may可以爲客戶1000和tranc_type是1. tranc類型1是16 - 可能是這樣這個查詢混合行 – xzdead

+0

@xzdead好點,我已經更新了我的答案,實際上是正確的! – ydaetskcoR

相關問題