본문 바로가기

DB-Oracle

10000줄짜리 임의데이터 쿼리작업

728x90
반응형

생일에 날짜범위를 지정하기위한 방법은
아래와 같이 처리할것
------------------------------------------------------------------------------------
SELECT LPAD(ROWNUM,6,'0')                    AS 사번                 --//6자리숫자 고정
    , INITCAP(DBMS_RANDOM.STRING('A', 6))    AS 성               --//첫글자대문자
    , INITCAP(DBMS_RANDOM.STRING('A', 10))   AS 이름           --//첫글자대문자
    , DBMS_RANDOM.STRING('X', 5)             AS 관리유형           --//5글자문자 고정
    , TO_CHAR(SYSDATE - DBMS_RANDOM.VALUE(3650,7300),'YYYYMMDD') AS 생일
FROM DUAL
CONNECT BY LEVEL <= 10000




------원본내용------
문제> 쿼리작성
아래 셈플형식을 참고하여,
10000줄짜리 임의 데이터 생성쿼리를 작성하시오.

- 사용목적
테이블 작업후, 데이터가 없어
업무분석이 어려울때, 임의로 데이터를 생성해서,
추가후에 임시로 작업을 진행할수 있다.



셈플형식
SELECT '123963' AS 사번              --//6자리숫자 고정
            , 'Asdfasdf' AS 성            --//첫글자대문자
            , 'Hewerw' AS 이름          --//첫글자대문자
            , 'AR001' AS 관리유형     --//5글자문자 고정
            , '20160801' AS 생일        --//8자리날짜범위내의 문자
FROM DUAL
;



--1111111
SELECT LPAD(TO_CHAR(ROUND(DBMS_RANDOM.VALUE(1,999999))),6,'0') AS EMP_COD
        , DBMS_RANDOM.STRING('U',  1)||DBMS_RANDOM.STRING('L',  6) AS LAST_NAME
        , DBMS_RANDOM.STRING('U',  1)||DBMS_RANDOM.STRING('L',  12) AS FIRST_NAME
        , DBMS_RANDOM.STRING('U',  2)||CEIL(DBMS_RANDOM.VALUE(100, 999)) AS MNG_TYP
        , ROUND(DBMS_RANDOM.VALUE(1900,2000))||TO_CHAR(ROUND(DBMS_RANDOM.VALUE(1,12)),'FM09')||TO_CHAR(ROUND(DBMS_RANDOM.VALUE(1,28)),'FM09') AS BIRTH_DAY
        FROM DUAL
CONNECT BY LEVEL <= 10000
--ORDER BY EMP_COD, LAST_NAME, FIRST_NAME, BIRTH_DAY
--//날짜형식에 29,30,31일이 빠질수 있음

--- 22222222
SELECT LPAD(TRUNC(DBMS_RANDOM.VALUE(1,10000)),6,'0') AS 사번              --//6자리숫자 고정
            ,INITCAP(DBMS_RANDOM.STRING('A', 10))AS 성            --//첫글자대문자
            ,INITCAP(DBMS_RANDOM.STRING('A', 10))  AS 이름          --//첫글자대문자
            ,DBMS_RANDOM.STRING('A', 5) AS 관리유형     --//5글자문자 고정
            ,TO_CHAR(TRUNC(DBMS_RANDOM.VALUE(20000101,21000101)) )  AS 생일        --//8자리날짜범위내의 문자
FROM DUAL
CONNECT BY LEVEL <= 1000;
--//날짜가 날짜형식범위에 있어야함


--3333333
SELECT 사번
     , 성
     , 이름
     , 관리유형
     , 년 || 월 ||
       DECODE(월,01, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,02, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,03, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,04, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,05, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,06, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,07, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,08, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,09, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,10, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,11, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
                ,12, CASE WHEN 일 < SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) THEN 일 ELSE SUBSTR(LAST_DAY(TO_DATE((년||월),'YYYYMM')),7,2) END
       ) AS 생일
  FROM(SELECT LPAD(TRUNC(DBMS_RANDOM.VALUE(1,999999)),6,'0')        AS 사번
            , DBMS_RANDOM.STRING('U',1)||DBMS_RANDOM.STRING('L',9)  AS 성
            , DBMS_RANDOM.STRING('U',1)||DBMS_RANDOM.STRING('L',19) AS 이름
            , TO_CHAR(DBMS_RANDOM.STRING('U',2)||LPAD(TRUNC(DBMS_RANDOM.VALUE(0,999)),3,0)) AS 관리유형
            , TRUNC(DBMS_RANDOM.VALUE(1900,2016))      AS 년
            , LPAD(TRUNC(DBMS_RANDOM.VALUE(1,12)),2,0) AS 월
            , LPAD(TRUNC(DBMS_RANDOM.VALUE(1,31)),2,0) AS 일
         FROM DUAL
   CONNECT BY LEVEL <= 10000) TEMP_TABLE
--//CASE WHEN LAST_DAY처리시 오류
728x90
반응형