부분적으로 뚜렷한/고유 한 행을 반환합니다
문제
두 열별로 그룹을 만들고 조건에 따라 추가 열을 반환해야합니다.
예를 들어 다음 열이 있다고 가정 해 봅시다.
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
제휴하지 않습니다 StackOverflow