0
라고 말합니다. 특정 날짜에 가격이 설정된 항목이 포함 된 Item이라는 테이블이 있다고 해봅시다.그룹 단위로 최대 열을 포함하는 행을 선택하십시오.
항목 이제
id | date | price
---+------------+------
1 | 2014-01-01 | 1.09
1 | 2014-03-15 | 1.19
2 | 2014-04-02 | 2.75
1 | 2014-07-28 | 0.99
2 | 2014-08-07 | 2.35
3 | 2014-10-21 | 3.90
내가 (각 항목에 대한 마지막 레코드) 항목 당 현재 가격 선택 싶습니다
WITH lastChange AS (
SELECT id, MAX(date) date
FROM Item
GROUP BY id
)
SELECT Item.id, Item.price
FROM Item
JOIN lastChange ON Item.id = lastChange.id AND Item.date = lastChange.date
주기 :
id | price
---+------
1 | 0.99
2 | 2.35
3 | 3.90
을 이 선택을하는 더 좋은 방법이 있는지 궁금하네요.
을 적용 당신이 동일한 ID와 날짜하지만 서로 다른 가격으로 두 개의 행이 있다면? – Anon
그런 일이 일어나지 않는다고 가정 해 봅시다. 이것은 단순화 된 예입니다. 나는 밀리 세컨드 (milliseconds)를 포함하여 시간을 더할 수는 있지만 그것은 그것이 내가 추측하는 질문을 더 분명하게하지는 않는다. – Aquillo
기본적인 질문은 "그룹 별 최대 열 수를 포함하는 전체 행을 어떻게 선택합니까?"라는 것이 분명합니다. 한 그룹에서 최신 가격 이상의 여러 상황을 처리하는 방법에 대해 신중히 생각하십시오. 테이블에 UNIQUE 제약 조건을 사용하십시오. – Anon