2017-10-06 15 views
1

이 문제를 해결할 방법이 있는지 궁금합니다.MySQL. 월 말일 경우 새로운 행 시작

그래서 내 행에는 일일 1 일 단위로 증가하는 날짜 형식의 열이 있습니다 (각 달이 끝날 때까지). 새 달이 시작되면 새 행이 생성되어야하고 해당 달이 끝날 때까지 업데이트가 다시 시작됩니다.

+1

날짜가 매일 증가하는 이유는 무엇입니까? –

+1

어떻게 초기 행을 만드시겠습니까? 나는 당신이 SQL보다는 프로그래밍 언어로 그것을 잡아야한다고 생각한다. –

+0

안녕하세요, ETL, Talend를 사용하고 있습니다. tMysqlInput에는 작업이 매일 밤마다 실행되도록 프로그래밍되어 있기 때문에 매일 증가시키는 CURDATE() 함수가 있습니다. –

답변

0

다음은 MySQL의 SQL 언어의 문제에 대해 생각할 수있는 방법입니다.

먼저, datestamp을 매월 고유 한 값으로 변경하는 함수가 필요합니다. 즉, LAST_DAY(datestamp)입니다. 임의의 입력에서 2017-09-30 00:00:00과 같은 DATETIME 값을 생성합니다.

다음으로 MySQL의 INSERT ... ON DUPLICATE KEY UPDATE 기능을 이용할 수 있습니다. 그런 다음 고유 복합 인덱스로 month_ending, category을이 열

month_ending DATETIME 
    category  VARCHAR(20) 
    sum_of_input INT 

, 말과 테이블 months을 생성합니다.

그런 다음 당신은 하드 목에 디버그, 통증이

INSERT INTO months     /* warning! not debugged! */ 
     (month_ending, category, sum_of_input) 
VALUES (LAST_DAY(?date), ?category, ?value) 
ON DUPLICATE KEY 
UPDATE months 
    SET sum_of_input = sum_of_input + ?value 
    WHERE month_ending=LAST_DAY(?date) 
    AND category=?category 

같은 그러나,이 큰의 특징을 가지고 않습니다. 이 요약 작업을 수행하기 위해 ETL 시스템 내부의 기능을 사용하는 것이 더 합리적입니다.