2015-03-02 83 views
0

好這個問題是有關我剛纔的問題How to left join 2 tables with SUM() and MAX() grouped by date如何左的連接選擇值最高的USER_ID

我改變的是我添加user_id列(自動遞增),並要選擇每個日期

最高USER_ID值

我有表loadhistory(希望「選擇唯一價值與最高user_id每日期」組和按日期降序DESC。) 所以在這種情況下,我想選擇150爲2015-02-27,因爲它有最高user_id在該日期和50爲2015-02-28

| user_id | customer_id |  date | bal | 
    1   1   2015-02-27 100 
    2   1   2015-02-27 150 
    3   1   2015-02-28 150 
    4   1   2015-02-28 50 

和表transactionrecord(想用SUM(BAL)GROUP BY和ORDER BY日期DESC總結每日期值)

| user_id |customer_id |  date  | bal | 
    1   1   2015-02-27  50 
    2   1   2015-02-27  20 
    3   1   2015-02-28  10 

,我想加入2代表這將是這樣的:

| date | balance | amount paid | 
    2015-02-28  50    10 
    2015-02-27  150    70 

這是到目前爲止的代碼(我用我從我剛纔的問題得到了代碼,並在我的新的問題在這裏編輯也希望能到達理想的結果,但沒有)

SELECT a.customer_id, a.date, (b.bal AS bal WHERE b.user_id = MAX(b.user_id) , a.paid 
FROM (
SELECT customer_id, date, SUM(bal) AS paid 
FROM transactionrecord 
GROUP BY customer_id, date 
) AS a LEFT JOIN loadhistory AS b 
ON a.customer_id = b.customer_id AND a.date = b.date 
WHERE a.customer_id = 1 
GROUP BY a.customer_id, a.date, a.paid 
ORDER BY a.date DESC 

請幫忙。在此先感謝

回答

0

的MySQL使用的第一行通過組由,所以你必須訂購之前,你可以這樣使用組:

SELECT * FROM (SELECT * FROM `loadhistory` ORDER BY user_id DESC) history GROUP BY date 

所以,你可以使用下面的查詢解決方案:

SELECT h.date,h.bal as balance, t.amount as 'amount paid' FROM 
    (SELECT * FROM (SELECT * FROM `loadhistory` ORDER BY user_id DESC) history GROUP BY date) as h 
JOIN 
    (SELECT SUM(bal) as amount, customer_id, date FROM `transactionrecord` GROUP BY date) as t 
ON h.date = t.date AND h.customer_id = t.customer_id 
ORDER BY date DESC 
+0

謝謝!代碼有效。非常感謝 – DewfordQ 2015-03-02 23:07:12