오라클 분기 구하기 0 7 1,730

by 블킹 [Oracle 기초] 오라클 분기 [2022.12.06 16:39:37]


안녕하세요. 일정 쿼리 작성중 막혀서 문의합니다.

특정일(20220401)과 조회년(2023) 을 받아 분기마다 일정을 만들어야 합니다

20230101

20230401

20230701

20231001

이런식으로 매년 값을 구해야 하는데 방향도 못잡고 있습니다 

감사합니다

by 우주민 [2022.12.06 16:54:08]

예시로 들은 항목은 특정일과 상관없이 조회년도 만으로 분기가 만들어지는 거 같습니다.

정확한 시나리오와 결과값을 알려주시면 많은 분께서 편하게 도움을 주실거 같네요.


by 블킹 [2022.12.06 20:51:29]

조금더 설명 하면

특정일 +3개월(분기) 마다 값을 조회해야합니다


by 마농 [2022.12.07 08:31:47]

좀더 상세한 설명이나 다른 조건 예시에 따른 결과를 보여주세요.
지금 설명은 왜 두개의 조건이 필요한지 당위성이 없습니다.


by 블킹 [2022.12.07 09:47:05]

감사합니다.

제가 약을 2종류먹는데 A약과B약을 분기(3개월)한번씩 먹어야합니다

A약을 먹기시작한날(20220401),B약(20220501)을 먹기시작한날이고 내년(2023)에는 A,B을 먹어야하는 날을 구해야 합니다

(A,20230101

B,20230201

A,20230401

B,20230501

A,20230701

B,20230801

A,20231001

B,20231101)

예상결과 입니다

 

설명이 부족해서 죄송합니다 

감사합니다


by 우주민 [2022.12.07 10:17:15]

특정일을 1개만 설정 했을때의 쿼리를 작성해봤습니다.

SELECT T1.YYYYMMDD
FROM (
    SELECT TO_CHAR(ADD_MONTHS(TO_DATE(:특정일변수,'YYYYMMDD'), (LEVEL - 1) * 3), 'YYYYMMDD') AS YYYYMMDD
    FROM DUAL
    CONNECT BY TO_CHAR(ADD_MONTHS(TO_DATE(:특정일변수,'YYYYMMDD'), (LEVEL - 1) * 3), 'YYYY') <= :년도변수
) T1
WHERE T1.YYYYMMDD LIKE :년도변수 || '%'

 


by 마농 [2022.12.07 10:27:36]
WITH t AS
(
SELECT 'A' cd, '20220401' dt FROM dual
UNION ALL SELECT 'B', '20220501' FROM dual
)
SELECT cd
     , TO_CHAR(ADD_MONTHS(dt, (CEIL(MONTHS_BETWEEN(sdt, dt) / 3) + lv - 1) * 3), 'yyyymmdd') dt
  FROM (SELECT cd
             , TO_DATE(dt, 'yyyymmdd') dt
             , TO_DATE('2023' || '01', 'yyyymm') sdt    -- 조회년도
          FROM t
        )
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 4)
;

 


by 블킹 [2022.12.07 13:13:44]

두분 너무 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입