파일의 데이터 레코드가 다른 경우 시작 날짜와 종료 날짜가 있습니다. 날짜는 5 년 이상 걸립니다. 지금은 시작 날짜에서 종료 날짜까지 1 년 간격을 사용하여 날짜를 분할하려고합니다.SQL을 사용하여 날짜 분할
SQL을 사용하여 레코드가 포함 된 파일을 반복하고 다른 테이블에 자동으로 삽입하려면 어떻게해야합니까?
미리 감사드립니다.
파일의 데이터 레코드가 다른 경우 시작 날짜와 종료 날짜가 있습니다. 날짜는 5 년 이상 걸립니다. 지금은 시작 날짜에서 종료 날짜까지 1 년 간격을 사용하여 날짜를 분할하려고합니다.SQL을 사용하여 날짜 분할
SQL을 사용하여 레코드가 포함 된 파일을 반복하고 다른 테이블에 자동으로 삽입하려면 어떻게해야합니까?
미리 감사드립니다.
"annualized"하위 집합을 다른 테이블에 쓰지 않고 가져올 수 있습니다. 그리고 일반적으로 은을 다른 테이블에 쓰지 않아야합니다. 원본 테이블의 데이터가 변경되면 다른 테이블에 행을 빠르게 작성하면 유지 관리에 어려움이 생길 수 있습니다. 테이블의 다른 데이터에 따라 행을 다른 테이블에 작성하면 정확한 집계 쿼리 (min(), max(), sum(), avg() 등을 사용하는 쿼리를 실행하는 것이 불가능하지는 않더라도 어렵게 될 수 있습니다.).
테이블을 만들어 보겠습니다.
create table test (
start_date date,
end_date date
);
-- Start in 2005; lasts more than a year.
insert into test values ('2005-03-02', '2014-12-31');
-- Start in 2005; lasts less than a year.
insert into test values ('2005-03-02', '2005-10-18');
-- Not in 2005.
insert into test values ('2006-02-15', '2008-11-13');
모든 "2005"행을 가져 오려면이 쿼리를 실행하십시오. 2005-01-01보다 늦은 경우 start_date의 실제 값을 원한다고 가정합니다.
select
case when '2005-01-01' between start_date and end_date
then '2005-01-01' else start_date
end start_date,
case when '2005-12-31' between start_date and end_date
then '2005-12-31' else end_date
end end_date
from test
where 2005 between extract(year from start_date) and extract(year from end_date)
order by start_date, end_date;
start_date end_date -- 2005-03-02 2005-10-18 2005-03-02 2005-12-31비슷한 방법으로 모든 "2006"행을 가져옵니다. 물론
select
case when '2006-01-01' between start_date and end_date
then '2006-01-01' else start_date
end start_date,
case when '2006-12-31' between start_date and end_date
then '2006-12-31' else end_date
end end_date
from test
where 2006 between extract(year from start_date) and extract(year from end_date)
order by start_date, end_date;
start_date end_date -- 2006-01-01 2006-12-31 2006-02-15 2006-12-31
, 당신은 create view
절에이 문장의 각을 포장 할 수 있습니다. 일 것이므로 일 것입니다.
고마워요. 나는 이것을 시도 할 것이다. – user3782929
테이블을 통해 루프를 실행하고 있습니까 (데이터가 이미 테이블에 있습니까?) 또는 SQL로 파일을 실제로 읽어야합니까? – Cheruvian
일반적으로이 작업을 수행하지 않을 것이며 SQL *을 사용하여 수행 할 수도 있습니다. 당신은 정말로 *하려고합니까? 날짜를 다른 테이블로 나누는 것은 문제가되지 않습니다. 그것은 문제에 대한 의문스러운 해결책 *입니다. * 진짜 * 문제는 무엇입니까? –
데이터가 시작일과 종료일이있는 Excel 파일에 있습니다. 이 데이터를 SQL 테이블로 추출 할 수 있습니다. 지금은 날짜를 분할하고 사용할 수있는 새로운 SQL 테이블로 결과를 이동 찾고 있습니다. – user3782929