나는이 포함 된 테이블이 positions
다음과 같이이 테이블은 다음과 같습니다단일 결과는
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | false | 19-07-2016 | 27-07-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
3 | false | 01-07-2016 | 18-07-2016
나는에 따라 중 하나 started_at
또는 finished_at
날짜를 사용하는 경우를 사용하여이 테이블을 정렬하고 있습니다를 current
여부를 true 또는 false입니다
SELECT *
FROM positions
ORDER BY
CASE
WHEN current = true
THEN started_at
ELSE finished_at
END
DESC
이 예상대로 잘 작동하지만 지금은 각 user_id
내 예제 데이터에서 다음과 같이 반환하고 싶습니다. 나는이 생각
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
는 GROUP BY
와 함께 할 수 있지만, 나는 그것이 오류없이 작동하거나 어쩌면 내가 잘 모르겠어요, 하위 쿼리를 필요로 얻을 수 없습니다. 원하는 결과를 쉽게 당신이 표준이 아닌 PostgreSQL을 DISTINCT ON
기능을 사용하여 원하는 것을 얻을 수 있습니다 user_id
1.
에 대한 초 행을 표시하기 때문에
"첫 번째 행만"은 "WHERE current = true"와 같습니까? – Razzka
죄송합니다. 실수로 수정했습니다. – Rob