2009-08-12 5 views
1

카드 번호의 나머지/최신 잔액을 행에서 가져 오려고합니다. 아래는 표의 표본입니다.어떻게 연속적으로 최신 항목을 얻으시겠습니까?

trans_id |  cardnumber |  trans_date  | balance 
--------------------------------------------------------------- 
1   | 1000005240000008 | 2009-07-03 04:54:27 |  88 
2   | 1000005120000008 | 2009-07-04 05:00:07 |  2 
3   | 1000005110000008 | 2009-07-05 13:18:39 |  3 
4   | 1000005110000008 | 2009-07-06 13:18:39 |  4 
5   | 1000005110000008 | 2009-07-07 14:25:32 |  4.5 
6   | 1000005120000002 | 2009-07-08 16:50:51 |  -1 
7   | 1000005240000002 | 2009-07-09 17:03:17 |  1 

결과는 다음과 같아야합니다

trans_id |  cardnumber |  trans_date  | balance 
--------------------------------------------------------------- 
1   | 1000005110000008 | 2009-07-07 14:25:32 |  4.5 
2   | 1000005120000002 | 2009-07-08 16:50:51 |  -1 
3   | 1000005240000002 | 2009-07-09 17:03:17 |  1 

가 이미 쿼리를 가지고 있지만 이런 식입니다 :

SELECT cardnumber, MAX(balance), trans_date 
FROM transactions 
GROUP BY cardnumber 

난 정말이에 도움이 필요, 메신저 갖는 힘든 시간. . 미리 :( 감사

마크

답변

2

나는 순간 내 앞에 MySQL의를 가지고 있지 않지만,이 같은 일을해야는 :

SELECT latest.cardnumber, latest.max_trans_date, t2.balance 
    FROM 
    (
     SELECT t1.cardnumber, MAX(t1.trans_date) AS max_trans_date 
     FROM transactions t1 
     GROUP BY t1.cardnumber 
    ) latest 
    JOIN transactions t2 ON (
     latest.cardnumber = t2.cardnumber AND 
     latest.max_trans_date = t2.trans_date 
    ) 

아마 5.0.x는가 필요합니다 더 나은 방법이있을 수 있습니다 : 3AM : - D

+1

감사합니다. 친구는 나를 위해 완벽하게 작동합니다. 아프다는 이유로이 코드를 더 짧게 처리하십시오. 그건 그렇고, 그것의 3PM 여기! : P – Marky

0

거의 비슷하지만 다른 방법으로 생각하면 어쨌든 가장 최근의 (최대) 트랜잭션으로 카드 번호를 사용하는 하위 쿼리를 만드는 것입니다 날짜를 입력 한 다음 원본과 연결하십시오. inal 테이블. 이것은 물론 동일한 시간에 cardnumber에 대한 트랜잭션이 발생하지 않는다고 가정합니다. 트랜잭션 FROM

SELECT t1.trans_id, t1.cardnumber, t1.trans_date, t1.balance 
FROM transaction AS t1 
JOIN (SELECT MAX(trans_date), cardnumber FROM transactions) AS t2 ON t2.cardnumber = t1.cardnumber 
0

SELECT * WHERE의 (에 cardNumber, TRANS_DATE()에 cardNumber을 선택한 MAX에 cardNumber BY 거래 GROUP FROM (TRANS_DATE));

+0

내 첫 번째 쿼리와 같은 결과를 제공합니다. SELECT cardnumber, MAX (잔액), trans_date FROM 거래 GROUP BY 카드 번호 도움 주셔서 감사합니다. :피 – Marky

관련 문제