제품 테이블이 있고 각 레코드에는 판매 된 가격이 있습니다.
+-------+-----+----+
|Product|Price|Date|
+-------+-----+----+
|a |2 |A |
+-------+-----+----+
|a |3 |B |
+-------+-----+----+
|a |4 |C |
+-------+-----+----+
|a |1 |D |
+-------+-----+----+
|b |10 |E |
+-------+-----+----+
|b |15 |F |
+-------+-----+----+
|b |20 |G |
+-------+-----+----+
[제품]별로 최대 가격 행 그룹을 선택하고 싶습니다. 쿼리 방법은 무엇입니까? 내가 원하는 결과 :
+-------+-----+----+
|Product|Price|Date|
+-------+-----+----+
|a |4 |C |
+-------+-----+----+
|b |20 |G |
+-------+-----+----+
나는 시도했다
SELECT Product, Max(Price) as Price FROM TableName GROUP BY Product
그러나 [Date] 열은 얻지 못합니다.
SQL 서버에있는 경우 항상 CTE를 사용할 수 있습니다.
WITH CTE AS
(
SELECT Product, MAX(Price) AS Price
FROM TableName
GROUP BY Product
)
SELECT CTE.Product, CTE.Price, T.Date
FROM CTE
INNER JOIN
TableName T ON CTE.Product = T.Product AND CTE.Price = T.Price
그러나 더 나은 성능을 발휘하는 다른 실행 가능한 옵션이있을 수 있습니다. 자신을 확인해야합니다. :) 또한 두 레코드에서 동일한 가격의 제품을 가질 수 있다는 점을 고려하지 않았습니다 (설명에서 고려되어야한다)....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다