반응형

 

등록한 휴일( 창립기념일등..) 과  주말(토,일)을 제외한    달의 마지막 4일 구하기

     WITH TB_HOLIDAY  AS (
               SELECT '20230703' AS ST_HOLIDAY_CD, '휴일1' ST_HOLIDAY_NM  FROM DUAL
               UNION SELECT '20230703' AS ST_HOLIDAY_CD, '휴일2' ST_HOLIDAY_NM  FROM DUAL
               UNION SELECT '20230713' AS ST_HOLIDAY_CD, '휴일3' ST_HOLIDAY_NM  FROM DUAL
               UNION SELECT '20230723' AS ST_HOLIDAY_CD, '휴일4' ST_HOLIDAY_NM  FROM DUAL
               UNION SELECT '20230726' AS ST_HOLIDAY_CD, '휴일5' ST_HOLIDAY_NM  FROM DUAL
               UNION SELECT '20230728' AS ST_HOLIDAY_CD, '휴일6' ST_HOLIDAY_NM  FROM DUAL
     )
     select v_date
     from  
     (
         select v_date
         from  
         (        
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') )     , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ),    'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL  
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -1 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -1, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -2 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -2, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -3 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -3, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -4 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -4, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -5 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -5, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -6 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -6, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -7 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -7, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -8 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -8, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -9 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -9, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL    
           UNION
              SELECT TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -10 , 'yyyymmdd')  v_date , DECODE ( TO_CHAR( LAST_DAY( TO_DATE( '202307', 'yyyymm') ) -10, 'D'), '1','Y','7','Y','X') isweeekd               FROM DUAL  
         ) b
         WHERE b.isweeekd = 'X'
           AND  b.v_date not in ( select st_holiday_cd from TB_HOLIDAY where st_holiday_cd   like substr( '202307', 1,6 ) || '%' )
         ORDER BY b.v_date desc
     )
     WHERE rownum <= 4
반응형
Posted by Edward. K
반응형

연동중인 Oracle DB작업으로 인해 잠시 내려가 있어...

 

1. 시작 - Microsoft SQL Server 2008 R2 폴더 클릭 - 구성도구 폴더 클릭 - SQL Server 구성 관리자 실행

2. SQL Server 서비스 > 우측의 'SQL Server 에이전트(SQLEXPRESS)'  마우스로 오른쪽 클릭 후 시작 클릭
   * 중지 선택시 중단 


3. SSMS 에서 확인.

반응형
Posted by Edward. K
반응형

TOAD 실행시 에러가 발생했다.
 - 에러발생 메세지 : Error reading TtdSQLRecall HistorySQL

SavedSQL.dat 파일을 삭제하면 된다.

  C:\Program Files (x86)\Quest Software\Toad for Oracle\User Files\SavedSQL.dat

 

반응형
Posted by Edward. K
반응형
     SELECT OBJECT_NAME, STATUS 
           , TO_CHAR(CREATED,'YYYY-MM-DD HH24:mi:ss') as CREATED 
           , TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:mi:ss') as LAST_DDL_TIME 
     FROM USER_OBJECTS  
     WHERE  OBJECT_TYPE = 'PROCEDURE' 
        AND OBJECT_NAME LIKE '%PRO_IF_T_%'
반응형
Posted by Edward. K
반응형

주문 > 취소 관계아 아래  데이터와 같을때..
START WITH ~ CONNECT BY 절을 사용하여 하나의 주문에 엮여 있는 취소 건들을 하나로 조회할 수있다.

[주문정보] * 주문정보가 있어야 취소가 가능하다.

SELECT
	  A."주문번호"
	, A."원주문번호"
	, B."주문상품순번"
	, DECODE(A."구분", 1, '매출', 2, '취소') AS    "주문구분"
	, B."금액합계"
	, A."주문일"    
FROM
	주문_마스터 A,
	주문_상품 B
WHERE 1=1
	AND A."주문번호" = B."주문번호"
	AND A."주문번호" =  'OR00000000000001' -- 주문번호 


[취소정보] 

SELECT
	  A."주문번호"
	, A."원주문번호"
	, B."주문상품순번"
	, DECODE(A."구분", 1, '매출', 2, '취소') AS    "주문구분"
	, B."금액합계"
	, A."주문일" 
FROM
	주문_마스터 A,
	주문_상품 B
WHERE 1=1
	AND A."주문번호" = B."주문번호"
	AND A."원주문번호" =  'OR00000000000001'  -- 주문번호 
   

원주문번호 'OR00000000000001' 의 취소 주문번호인 'OR00000000000011' 의 번호로,
원주문번호에 엮인 주문건들의 합을 조회해보자.

[최상위 (매출)주문번호 하위의 주문(취소)정보들 가져오기]

 SELECT 
	  A."주문번호"
	, A."원주문번호"
	, B."주문상품순번"
	, DECODE(A."구분", 1, '매출', 2, '취소') AS    "주문구분"
	, B."금액합계"
	, A."주문일"
FROM
	주문_마스터 A,
	주문_상품 B
WHERE 1=1
	AND A."주문번호" = B."주문번호"
START WITH
	A."주문번호" = ( SELECT	MAX (Z."주문번호") 
                        FROM	주문_마스터 Z 
                        START WITH  Z."주문번호" = 'OR00000000000011'    --.ORD_NO = 'OR20170800011597'  인 값에서..
                        CONNECT BY PRIOR Z."원주문번호"  = Z."주문번호"    -- ORI_ORD_NO 아래의 ORD_NO를 연결하고.
                        GROUP BY CONNECT_BY_ISLEAF   -- 자식 노드가 있으면 1, 없으면 0 
                        HAVING 	CONNECT_BY_ISLEAF = '1'  
                     )
CONNECT BY  PRIOR A."주문번호" = A."원주문번호"   -- "주문번호" 아래의 "원주문번호"  
        AND PRIOR B."주문상품순번 = B."주문상품순번   
       

ㅜ.ㅜ 쿼리는 언제나 어려워......

START WITH  : 어떤 데이터로 계층구조를 지정할 것인가? 
                  가장 처음에 데이터를 거르는 플랜을 타게 되기때문에 해당 컬럼에는 인덱스가 걸려있어야 한다.
CONNECT BY : 각 행들의 연결 관계를 설정 ( 결과에는 LEVEL 이라는 컬럼이 있으며, 이는 계층의 깊이를 의미한다.

반응형
Posted by Edward. K