>source

S_ResumeWorkHistory 를 사용하고 있습니다  테이블 및 데이터 저장

CREATE TABLE S_ResumeWorkHistory (
    ResumeID int,
    FromMonth int,
    FromYear int,
    ToMonth int,
    ToYear int,
    CurrentlyWorking varchar(1)
)
INSERT INTO S_ResumeWorkHistory
    (ResumeID, FromMonth, FromYear, ToMonth, ToYear, CurrentlyWorking)
VALUES 
    (17, 6,  2015, 10, 2016, 'N'),
    (17, 10, 2016, -1,   -1, 'Y')

같은 총체적인 경험을 원합니다

이력서, 경험

17 년, 3 년 3 개월

이 쿼리를 시도했습니다

select 
    SUM(convert(int,DATEDIFF(MONTH, FromMonth+'/1/'+FromYear, (CASE CurrentlyWorking WHEN 'N' THEN ToMonth+'/1/'+ToYear ELSE GETDATE() END))/12)),
    SUM(convert(int,DATEDIFF(MONTH, FromMonth+'/1/'+FromYear, (CASE CurrentlyWorking WHEN 'N' THEN ToMonth+'/1/'+ToYear ELSE GETDATE() END)) % 12))
FROM S_ResumeWorkHistory

도움을 주셔서 감사합니다.


  • 답변 # 1

    질문을 이해하면 다음과 같은 방법으로 시도해보십시오. 먼저 DATEFROMPARTS() 를 사용하여 날짜와 날짜의 차이를 얻으십시오.  그리고 DATEDIFF() 그런 다음 그 차이를 연도 및 월로 계산하십시오.

    입력

    CREATE TABLE S_ResumeWorkHistory (
        ResumeID int,
        FromMonth int,
        FromYear int,
        ToMonth int,
        ToYear int,
        CurrentlyWorking varchar(1)
    )
    INSERT INTO S_ResumeWorkHistory
        (ResumeID, FromMonth, FromYear, ToMonth, ToYear, CurrentlyWorking)
    VALUES 
        (17, 6,  2015, 10, 2016, 'N'),
        (17, 10, 2016, -1,   -1, 'Y')
    
    

    문법

    ;WITH MonthsCTE AS (
        SELECT 
            ResumeId,
            CASE 
                WHEN CurrentlyWorking = 'N' THEN DATEDIFF(month, DATEFROMPARTS(FromYear, FromMonth, 1), DATEFROMPARTS(ToYear, ToMonth, 1))
                ELSE DATEDIFF(month, DATEFROMPARTS(FromYear, FromMonth, 1), GETDATE())
            END AS Months
        FROM S_ResumeWorkHistory
    )
    SELECT
        ResumeId,
        (CONVERT(nvarchar(100), SUM(Months) / 12)) + ' years, ' +
        (CONVERT(nvarchar(100), SUM(Months) % 12)) + ' months' AS Experience
    FROM MonthsCTE
    GROUP BY ResumeId
    
    

    출력

    ResumeId    Experience
    17          3 years, 9 months
    
    

  • 이전 파이썬 사전에서 키와 값 사이를 전환하는 방법 (메모리의 위치를 ​​변경하지 않고)
  • 다음 spring boot - 배포시 Liquibase 실행을위한 컨텍스트를 격리하는 간단한 방법이 있습니까?