특정 논리와 결합하려는 두 개의 테이블이 있습니다.MySQL/Hive : 윈도우 또는 분석 함수를 사용하여 조건부 행 결합
된 table_1 (S_No, ID, 날짜 1, 날짜 2)
S_No ID Date1 Date2
1 id1 2014-05-01 2014-07-03
2 id1 2015-03-23 2016-06-18
3 id1 2016-06-21 2016-07-29
Table_2 (S_No_New, ID_New, Date_New)
S_No_New ID_New Date_New
2_1 id1 2014-04-25
2_2 id1 2014-06-14
2_3 id1 2015-01-10
2_4 id1 2015-02-15
2_5 id1 2015-05-17
2_6 id1 2016-04-24
2_7 id1 2016-06-19
2_8 id1 2016-06-25
2_9 id1 2016-07-11
2_10 id1 2016-08-11
2_11 id1 2016-08-16
내가 얻을 수있는 방법으로 두 테이블 위의 가입하려는 Date1 이전 및 Date1과 Date2 사이에 table_2에 몇 행이 있는지 계산 한 다음 다음 행으로 이동할 때 동일한 ID에 대해 아직까지 계산되지 않은 데이터를 사용해야합니다. 우리가 표 1의 마지막 DATE2 입력 후 table_2의 날짜 항목이있는 경우
는 그리고 우리는 하나가 "S_No와 유사한 남아있는 열 세부에 추가 '로 새 행을 추가 할 필요가있다. 전체
이 문제 두 부분으로 나눌 수 있습니다 : 당신은 해결책을 알고있는 경우
1) 얻기 카운트 열
2) 여분의 행을 추가 (S_No는 "4")이 예에서
는 두 가지 중 하나에 대한 답을 들러주세요
최종 출력 :
S_No ID Date1 Date2 Count_pre Count_Between
1 id1 2014-05-01 2014-07-03 1 1
2 id1 2015-03-23 2016-06-18 2 2
3 id1 2016-06-21 2016-07-29 1 2
4 id1 NULL NULL 2 0
로직 :
S_No 1
Count_Pre = 날짜 2014-05-01 및
2014년 7월 3일 사이 2014-05-01
Count_between = 날짜 이전 S_No 2
2015년 3월 23일 및 2016년 6월 18일 사이 Count_between = 날짜
등
중간 테이블은 다음과 같이보고 있습니다
S_No ID Date Date2 S_No_New Date_New
1 id1 2014-05-01 2014-07-03 2_1 2014-04-25
1 id1 2014-05-01 2014-07-03 2_2 2014-06-14
2 id1 2015-03-23 2016-06-18 2_3 2015-01-10
2 id1 2015-03-23 2016-06-18 2_4 2015-02-15
2 id1 2015-03-23 2016-06-18 2_5 2015-05-17
2 id1 2015-03-23 2016-06-18 2_6 2016-04-24
3 id1 2016-06-21 2016-07-29 2_7 2016-06-19
3 id1 2016-06-21 2016-07-29 2_8 2016-06-25
3 id1 2016-06-21 2016-07-29 2_9 2016-07-11
4 id1 NULL NULL 2_10 2016-08-11
4 id1 NULL NULL 2_11 2016-08-16
내가 시도 된 다른 윈도우 및 분석 기능을하지만,이 문제를 가져올 수 없습니다. 하이브 (기본 SQL)에서 이러한 종류의 조인을 수행 할 수 있습니까?
참고 : 편집 2 :이 하이브에 구현해야하며 모든 내장 함수를 지원하지만 mysql의 변수는 지원하지 않습니다. 집계, 윈도우 및 분석 기능을 지원합니다.
편집 : YYYY-MM-DD
MySQL의 또는 SQL 서버에 일/월/년에서 날짜 형식을 변경? –
실제로 MySQL입니다. –
1 날짜를 날짜로 저장 – Strawberry