2013-03-11 3 views
1

내가
Retrieving the last record in each group특정 그룹

는 내가 필요로하는 모든 레코드를 포함하는 단일 테이블이 씨 Karwin에 의해 여기에 제시된 해결책을 노력을 무시하는 기준, MYSQL 단일 테이블에서 각 그룹의 마지막 레코드를 가져 FF 기록으로.

-------------------------------------------------- 
| Keynum  | PaymentID | BuyerID | LatestBill | 
|----------- | -----------|---------|------------| 
| 3  | 4  | 4 | 30000  | 
| 2  | 4  | 4 | 10000  | 
| 1  | 4  | 4 | 10000  | 
| 1  | 9  | 9 | 9999  | 
-------------------------------------------------- 

원하는 출력은 다음과 같습니다

-------------------------------------------------- 
| Keynum  | PaymentID | BuyerID | LatestBill | 
|----------- | -----------|---------|------------| 
| 3  | 4  | 4 | 30000  | 
| 1  | 9  | 9 | 9999  | 
-------------------------------------------------- 

은 내가 시도하는 것은 이것이다 : 그러나

SELECT max(keynum), PaymentID, BuyerID, NewInstallmentBal 
FROM aliissales.tblmovedactual 
GROUP BY PaymentID, BuyerID DESC; 


Select keynum, PaymentID, BuyerId, LatestBill From Sales where LatestBill != 0 group by PaymentID, BuyerID order by keynum Desc; 

이 무엇 나는 이걸 :

-------------------------------------------------- 
| Keynum  | PaymentID | BuyerID | LatestBill | 
|----------- | -----------|---------|------------| 
| 1  | 4  | 4 | 10000  | 
| 1  | 9  | 9 | 9999  | 
-------------------------------------------------- 

각 레코드의 마지막 레코드는 PaymentID와 BuyerID로 그룹화해야한다.

Max (keynum)를 사용하면 실제로는 각 그룹의 최대 키인 수는 있지만 그에 해당하는 레코드는 없습니다. 레코드를 Keynum과 함께 사용하는 더 간단한 방법은 무엇입니까 ??

또한 LatestBill = 0이면 전체 gorup이 무시됩니다.

keynum 3 LatestBill = 0, group BuyerID 4 , PaymentID 4 is now ignored.  

답변

1
SELECT a.* 
FROM aliissales.tblmovedactual a 
     INNER JOIN 
     (
      SELECT max(keynum) xx, PaymentID, BuyerID 
      FROM aliissales.tblmovedactual 
      GROUP BY PaymentID, BuyerID 
     ) b ON a.PaymentID = b.PaymentID AND 
       a.BuyerID = b.BuyerID AND 
       a.keynum = b.xx 
+0

감사합니다.하지만 특정 조건을 만족하는 레코드를 무시하는 조건은 어디에 추가합니까? 예 : LatestBill = 0이면 레코드가 무시됩니다. 조인 안에 (where) statement를 추가하려고 시도했지만, 이제 2 | 4 | 4 | 10000 –

+0

당신은 그것을 가장 바깥 쪽의 select ex에 추가 할 수 있습니다. http://www.sqlfiddle.com/#!2/099c3/3 –

+0

고맙습니다. –

0

SELECT KEYNUM, PaymentID, BuyerID, NewInstallmentBal aliissales.tblmovedactual WHERE KEYNUM IN ( SELECT 최대 FROM (KEYNUM) FROM 경우 aliissales.tblmovedactual PaymentID에 의한 그룹 )

관련 문제