다음과 같은 테이블이 있습니다 :
ID Date Name Age
1 10/04/2015 Theja 24
1 28/04/2015 Theja1 26
1 14/07/2015 Theja2 45
1 30/07/2015 Theja2 45
1 30/08/2015 Theja3 54
2 10/04/2016 Jaya 23
2 28/04/2016 Jaya 23
2 14/05/2016 Jaya1 65
2 30/05/2016 Jaya1 65
그러나 나는 다음과 같은 출력을 원한다 :
ID Date Name Age
1 28/04/2015 Theja1 26
1 01/05/2015 Theja1 26
1 01/06/2015 Theja1 26
1 30/07/2015 Theja2 45
1 30/08/2015 Theja3 54
2 28/04/2016 Jaya 23
2 30/05/2016 Jaya1 65
매월 최대 1 개의 레코드를 고려하고 ID에 대해 누락 된 월이 있으면 이전 레코드가 누락 된 월에 채워지는 것을 고려하십시오.
- 답변 # 1
- 답변 # 2
솔루션을 시도했지만 다음과 함께 제공되었지만 출력에 누락 된 행을 삽입하려면 달력 테이블이 필요합니다. 여기에 제공된 SQL Server 기반 솔루션
데이터 설정 :
create table temptable ( id int, [date] date, name varchar (50), age int ); insert into temptable values (1,'04-10-2015','Theja',24) insert into temptable values (1,'04-28-2015','Theja1',26) insert into temptable values (1,'07-14-2015','Theja2',45) insert into temptable values (1,'07-30-2015','Theja2',45) insert into temptable values (1,'08-30-2015','Theja3',54) insert into temptable values (2,'04-10-2016','Jaya',23) insert into temptable values (2,'04-28-2016','Jaya',23) insert into temptable values (2,'05-14-2016','Jaya1',65) insert into temptable values (2,'05-30-2016','Jaya1',65)
다음 문제는 복제 문제가 발생할 때까지 완료됩니다. 그러나 누락 된 행을 얻으려면 달력 테이블을 구현해야합니다. 캘린더 테이블에 가입 한 다음 cte3의 출력을 사용하여 누락 된 데이터를 얻을 수 있습니다.
with cte1 as ( select *, row_number() over ( partition by month([date]) order by [date]) as rownm, concat(id,format([date],'MMyyyy')) as unqcol from temptable ) , cte2 as ( select unqcol, max(rownm) as maxdt from cte1 group by unqcol ), cte3 as ( select a.*, lead(a.[date]) over (partition by a.id order by a.id,a.[date]) as NextDate from cte1 a inner join cte2 b on a.unqcol=b.unqcol and a.rownm=b.maxdt ) select c.id,c.[date],c.name,c.age,c.NextDate from cte3 c order by c.[date]
관련 자료
- 파이썬을 사용하여 텍스트 파일에서 중복 (원본 및 중복)을 모두 제거하십시오
- xslt 2.0 - 어떻게 첫 번째 인스턴스를 포함하여 중복을 제거하고 단지는 고유 비 반복적 인 노드를 포함하는?
- r - 상위 매트릭스 상관을 정렬하고 적용하지 않고 역 중복을 제거
- r - 두 개의 문자열로 연결, 중복 제거
- 대소 문자를 구분하지 않지만 대소 문자를 구분하여 PHP 다차원 배열에서 중복을 제거하는 방법은 무엇입니까?
- sql - collect_set ()이 있지만 연속적인 중복 제거
- awk/sed 중복 제거 및 순열을 병합
- python - Pandas에서 그룹 내에서 중복 항목을 제거하는 방법
- awk - 유닉스 스왑 이름으로 중복을 제거
- python - 중첩 된 사전에서 중복 제거
- list - 키 당 다양한 수의 문자열로 중복 값을 제거하는 데 필요한 Pythonic 접근법
- sql - 하나의 열을 기준으로 선택 쿼리에서 중복 제거
- r - 두 번째 열을 기준으로 중복 제거
- java - 세트의 ArrayList에서 중복 제거 | ArrayList tmp
- python - dicts 목록에서 중복을 제거하는 방법은 무엇입니까?
- datagridview vbnet에서 combinde 복제본을 제거하십시오 그물
- python 3.x - 행의 중복 콤보 값을 제거한 후 중복이 제거되지 않습니다
- sql - 키없이 중복 제거
- excel - 특정 범위에서 중복을 제거하고 권리 측면과 아래에 다른 데이터를 남기는 방법은 무엇입니까?
- postgresql - Postgres는 고유 제약 조건을 추가하기 위해 중복 (여러 열)을 제거합니다
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- JavaScript 변수를 HTML div에 '출력'하는 방법
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 문자열에서 특정 문자 제거
다른 데이터베이스는 날짜를 처리하는 방법이 다릅니다. 다음은 한 달에 한 행을 얻는 ANSI 표준 방법입니다.