기간을 기준일로 분리하려 하는데요. 0 8 896

by 정규직 [SQL Query] [2015.03.27 10:04:36]


안녕하세요.

기간이  2012.01.01 ~ 2014.10.20 이고
기준일이 2013.09.30 일 경우 아래와 같이 날짜를 분리하려고 합니다.

1. 2012.01.01 ~ 2013.09.30
2. 2013.10.01 ~ 2014.10.20

많은 도움 부탁드립니다.

by jkson [2015.03.27 10:17:22]

많은 도움을 드리고 싶은데 설명이 부족하네요. 어떤 데이터 집합이 있을 때 입력 값이 무엇이고  결과가 어떻게 나와야 되는지 설명이 전혀 없네요.


by 창조의날개 [2015.03.27 10:18:58]
WITH TT AS(
      SELECT '2012.01.01' SDATE
           , '2014.10.20' EDATE
           , '2013.09.30' PDATE
      FROM DUAL
)
SELECT DECODE(LEVEL,1,SDATE,PDATE)
     ||' ~ '|| DECODE(LEVEL,1,PDATE,EDATE) ODATE
FROM TT
CONNECT BY LEVEL <= 2
;

 


by jkson [2015.03.27 14:36:38]

본문 내용만 보시고 바로 캐치하시다니.. 제가 말끼를 잘 못알아 듣는 거로군요;


by 정규직 [2015.03.27 10:23:58]

단순히 시작일, 종료일, 기준일을 입력 받아 기준일을 기준으로  임시집합을 만들려고 합니다.


by 개발뉴비 [2015.03.27 10:54:14]
WITH TT AS(
      SELECT 1 SEQ, '20140101' FRDT, '20141020' TODT, '20150930' CHKDT FROM DUAL UNION ALL
      SELECT 2 SEQ, '20141201', '20150710', '20150315' FROM DUAL
)
SELECT * FROM (
    SELECT SEQ
        , FRDT
        , CHKDT AS TODT
    FROM TT
    UNION ALL
    SELECT SEQ
        , TO_CHAR(TO_DATE(CHKDT, 'YYYYMMDD')+1, 'YYYYMMDD') FRDT
        , TODT 
    FROM TT) AA
ORDER BY AA.SEQ, AA.FRDT

 


by DarkBee [2015.03.27 14:43:45]
SELECT DECODE ( LEVEL, 1, sdate || '~' || std_date
                     , 2, TO_CHAR ( TO_DATE ( sdate, 'YYYY.MM.DD' ) + 1, 'YYYY.MM.DD' ) || '~' || edate
       )
  FROM DUAL
CONNECT BY LEVEL <= 2

 


by 쿼리back [2015.03.27 14:52:43]
WITH TT AS(
      SELECT '2012.01.01' SDATE
           , '2014.10.20' EDATE
           , '2013.09.30' PDATE
      FROM DUAL
)
select *
from(
select max(sdate||'~'||pdate) d1,max(to_char(to_date(pdate,'yyyy.mm.dd')+1 , 'yyyy.mm.dd') ||'~'||edate) d2
from tt , (select level lv from dual connect  by level <= 2)
) 
unpivot ( dt for seq  in (d1 as 1  , d2 as 2))

 


by 정규직 [2015.03.31 11:04:29]

답변 감사합니다.

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