고객 & 프로파일 2 테이블에 합류했습니다. 두 테이블 모두 특정 열 cust_id로 조인됩니다. 프로필 표에는 1 개 이상의 항목이 있습니다. 두 테이블을 조인 할 때 start_ts (column)로 가장 최근 엔트리를 선택하고 싶습니다. 결과적으로 고객의 1 행 - 행과 결과 세트의 프로필의 가장 최근 행을 원합니다. 이 ORACLE SQL을 수행 할 수있는 방법이 있습니까? (모든 DB 엔진 작동)조인의 일부로 가장 최근 레코드 가져 오기
답변
나는 것 윈도우 함수를 사용 : 당신은뿐만 아니라 프로파일이없는 고객을 얻을 좋아하는 경우에 당신은 left join
을 사용할 수 있습니다
select . . .
from customer c join
(select p.*,
row_number() over (partition by cust_id order by start_ts desc) as seqnum
from profile
) p
on c.cust_id = p.cust_id and p.seqnum = 1;
. @juergen
select
c.*,
p.*
from
customer c inner join
profile p on p.cust_id = c.cust_id and not exists(
select *
from profile
where cust_id = c.cust_id and start_ts > p.start_ts
)
한 가지 방법은 데이터를 필터링 할 데이터를 선택하고 profile
의 특정 최대 레코드에 가입 할 테이블을 조인하는 것입니다
select c.*, p.*
from customer c
join profile p on c.cust_id = p.cust_id
join
(
select cust_id, max(start_ts) as maxts
from profile
group by cust_id
) p2 on p.cust_id = p2.cust_id and p.start_ts = p2.maxts
감사 : 여기 –
"모든 DB 엔진에서 작동하는"것은 좋은 일일 수 있지만 좋지 않을 수도 있습니다. 오라클 제품에 막대한 돈을 투자한다면 모든 DB 엔진에서 반드시 사용할 수있는 Oracle 기능을 활용할 수도 있습니다. 이 경우 분석 함수는 반복 조인보다 더 빠른 솔루션을 제공합니다. – mathguy
동의 함 ....... –
감사합니다 @maraca !! –
- 1. 가장 최근 로그가있는 레코드 선택
- 2. MySQL에서 가장 최근 행만 가져 오기
- 3. python ftp 가장 최근 파일 가져 오기
- 4. 가장 최근 게시물 만 가져 오기
- 5. Swift의 CoreData에서 가장 최근 항목 가져 오기
- 6. Python RotatingFileHandler : 가장 최근 항목 가져 오기
- 7. LINQ 왼쪽 조인의 첫 번째 레코드 가져 오기
- 8. LINQ 가장 최근 레코드 쿼리
- 9. DateTime을 사용하는 가장 최근 레코드
- 10. 최근 메시지를 '스레드'보기로 가져 오기
- 11. rails : 루프 내에서 가장 최근 레코드 얻기
- 12. 가장 최근 날짜가있는 SQL 전용 풀 레코드
- 13. Instagram 최근 태그 가져 오기
- 14. 오라클의 매우 큰 데이터베이스에서 최근 N 개의 레코드 가져 오기
- 15. MS SQL에서 최근 1 년 동안 주별로 레코드 가져 오기
- 16. 가장 최근 날짜가있는 레코드 만 표시
- 17. Sqlite - 테이블 당 가장 최근 레코드 얻기
- 18. 가장 최근 날짜의 Access에서 레코드 선택
- 19. 최근 본 동영상 가져 오기?
- 20. TFS 최근 참조 가져 오기
- 21. 다중 선택 목록 상자에서 가장 최근 SelectedItem 값 가져 오기
- 22. SSIS를 사용하여 CSV에서 SQL Server로 가장 최근 데이터 가져 오기
- 23. MySQL 두 데이터베이스 테이블에서 가장 최근 항목 가져 오기
- 24. Python은 특정 확장자를 가진 디렉토리에서 가장 최근 파일 가져 오기
- 25. facebook search api를 사용하여 가장 최근 게시물 가져 오기
- 26. 그룹화 도구를 사용한 후 가장 최근 날짜 가져 오기
- 27. 결과가 두 개 이상일 경우 가장 최근 결과 가져 오기
- 28. mysql에서 레코드 가져 오기
- 29. 테이블에서 레코드 가져 오기
- 30. 초기 레코드 가져 오기
@PunterVicky - Oracle과 함께 일하면서 둘 이상의 참여를 사용하는 다른 사용자에 대해 Gordon의 솔루션을 테스트 할 수 있습니다. Gordon의 솔루션은 훨씬 더 효율적 (더 빠름)합니다. 분석 기능이 꽤 표준 임에도 불구하고 오라클에게 큰돈을 지불하는 이유는 다른 SQL 데이터베이스 제품에는없는 추가 기능입니다. 분석 함수는 쿼리에서 시간 소모적 인 조인 횟수를 줄이는 특정 목적으로 도입되었습니다. – mathguy
감사합니다. @Gordon & mathguy. 나는 이것을 밖으로 시도 할 것이다! –