문제

두 열별로 그룹을 만들고 조건에 따라 추가 열을 반환해야합니다.

예를 들어 다음 열이 있다고 가정 해 봅시다.

ProductCode | SerialNumber | 수량 | 날짜 구매 | 고객 ID

그리고 테이블에는 Quanitites와 구매 날짜가 다른 ProductCode와 SerialNumber의 중복 조합이 포함되어 있습니다. DatePublased의 가장 큰 (가장 최근) 값을 가진 ProductCode, SerialNumber 및 행의 수량을 반환하고 싶습니다. 더욱 복잡하게하려면 customerID = 'xxx'인 모든 행에 대해이를 수행해야합니다.

어떤 아이디어 ???

모든 도움이 감사합니다. 건배.

도움이 되었습니까?

해결책

고유 한 날짜 구매를 가정하면 :

SELECT a.*
FROM Table as a
JOIN (
   SELECT ProductCode, SerialNumber, MAX(DatePurchased) as MaxDate 
   FROM Table
   GROUP BY ProductCode, SerialNumber
) as b ON
   a.ProductCode = b.ProductCode
   AND a.SerialNumber = b.SerialNumber
   AND a.DatePurchased = b.MaxDate
WHERE
   a.CustomerID = 'xxx'

다른 팁

SELECT
     T1.ProductCode,
     T1.SerialNumber,
     T1.Quantity
FROM
     Some_Table T1
LEFT OUTER JOIN Some_Table T2 ON
     T2.ProductCode = T1.ProductCode AND
     T2.SerialNumber = T1.SerialNumber AND
     T2.CustomerID = T1.CustomerID AND
     T2.DatePurchased > T1.DatePurchased
WHERE
     T1.CustomerID = 'xxx' AND
     T2.ProductCode IS NULL
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top