반응형
SMALL

분류 전체보기 77

오라클 다중 IN MSSQL에서는 EXISTS로 해보자

오라클을 사용하시는분들이 아래 IN절을 사용하다 MSSQL을 사용하게 되면 불편해 하신다. 아래 문장이 도움이 되기를 바란다. SELECT * FROM TEMPA WHERE (A, B) IN ( SELECT A, B FROM TEMPB WHERE C ='Y') DELETE FROM TEMPA WHERE (A, B) IN ( SELECT A, B FROM TEMPB WHERE C = 'Y' ) 위에 SELECT 문을 DELETE로 바꿔서 아주 잘사용하셨다고 한다. 그런데 MSSQL은 어떻게 하나 물어보신다 답은 EXISTS를 사용하시라고 권해 드린다. SELECT A.* FROM TEMPA A WHERE EXISTS ( SELECT 1 FROM TEMPB B WHERE B.A = A.A AND B.B. =..

DB 2024.03.07

DB 정렬 ORDER BY 관련

DB 조회 구문을 만들때 ORDER BY를 사용하다가 아무렇지 않게 실수하는 경우가 있다. 아래 두구문의 같은 값인것 같지만 결과는 다르게 나온다. 왜 그럴까? 그건 바로 DATA 타입 때문이다. 위에 구문은 SEQ가 문자형이고 아래는 숫자형이다. 쿼리에 자신있다고 하다가 결과도 보지 않고 담당자와 이야기 하다가 결과가 이상한데요 라는 부끄러운 결과를 볼수 있다. 자만하지 말고 자신이 만든 쿼리를 항상 테스트 하는 습관을 기르도록 하자 예시1) WITH TMPTABLE AS ( SELECT '1' AS SEQ UNION ALL SELECT '2' AS SEQ UNION ALL SELECT '10' AS SEQ UNION ALL SELECT '11' AS SEQ ) SELECT * FROM TMPTABLE..

DB 2024.03.07

WHERE 조건에 CASE문 처리

사용법만 알면 자주 사용하게 되는것중에 하나가 WHERE 조건에 CASE문을 넣으로 조건에 맞으면 조건절 실행 DECLARE @PARAFLAG VARCHAR(MAX) = 'Y' SELECT AA, BB, CC, DD FROM TEMPTABLE WHERE 1 = CASE WHEN @PARAFLAG = 'Y' THEN 1 ELSE CASE WHEN THEN CC = 'TYPE' ELSE 1 ELSE 0 END END 받은 변수DATA가 Y인경우 CC컬럼의 값이 TYPE인 DATA를 가져옴 Y가 아닌경우 WHERE 조건절은 1 = 1 로 전체 검색을 한다. 사용방법에 따라 유용하게 쓰인다.

DB 2024.03.07

[CANIS] TREE 설정

보통 TOOL에서는 컬럼이나 컨트롤에 TREE 설정하는게 쉽지만은 않다 그런데 CANIAS에서는 SETCOLPICTURE 함수를 사용하면된다. 또는 속성에서 LABLE&PICTURE -> PICTURE로 설정하면된다. SETCOLPICTURE 테이블_컬럼 TO 컬럼레이블명,포맷; EX) OBJECT: STRING PIC; PIC = 'Example,T(*)'; SETCOLPICTURE TMPTABLE_AAAAA TO PIC ; 포맷: Image- /(*) Image(Fit) - /(#) Icon - LI(*) Icon(Fit) -LI(#) TreeNode - T(*) Progress - P(*) Time - time Times -times Date - date DateTime - datetime Inte..

프로젝트 원가

프로젝트 직/간접 비용 1. 프로젝트별로 상위 프로젝트, 직/간접여부, 계약금, 중도금, 잔금에 따른 총액을 계산하여 저장한다. 2. 프로젝트의 예산정보를 상세하게 입력한다. 버전별 관리가 되어야 한다. ▶ 비용유형에 따른 재료비/ 노무비/경비/외주비/판관비 등을 상세하게 입력한다. 3. 프로젝트 원가 실적을 계산한다. 3-1 프로젝트가 종료되지 않은 전월프로젝트를 당월로 복사한다. 3-2 당월에 발생된 실적을 집계한다. ▶ 계약금액, 총예정원가, 실확정원가 3-3 원가계산 (진도율, 환산매출, 매출차이, 배부기준) ▶ 진도율 = 실확정원가/ 총예정원가 ▶ 환산매출 = 계약금액 * 진도율 ▶ 매출차이 = 당월환산매출 - 전월 환산매출 ▶ 배부기준 = 매출차이 / 당월매출차이 합계 4. 프로젝트원가 수집 ..

[CANIS] 날짜 관련 처리

DB에서 날짜가 올라오는 경우는 아래와 같이 처리하면 된다. STRING값인 경우는 PARSEDATE 또는 FORMATDATE 로 형변환 후에 진행한다. DB에 DATA가 NULL인경우는 '01.01.1975 00:00:00' 인 값이 올라온다. GLOBAL: STRING V1, DATE V2, DATE V3 ; IF STRLEN(GETMONTH(TMPTABLE_DATE)) == 1 THEN V1= '0' + GETMONTH(TMPTABLE_DATE); ELSE V1= GETMONTH(TMPTABLE_DATE); ENDIF; V2= '01.' + V1 + '.' + GETYEAR(TMPTABLE_DATE); V3= GETDATE(CONTROL_DATE); IF TMPTABLE_DATE == '01.01...

[MSSQL] STUFF() / FOR XML PATH()

STUFF 문자열의 위치와 길이를 지정하여 다른 문자로 치환하는 함수 STUFF(문자열, 위치, 길이, 치환할 문자) FOR XML PATH 쿼리의 결과 데이터를 XML 형태로 표현 FOR XML PATH('row element명') 예제) WITH TEST_TABLE AS ( SELECT 1 as seq, '햄버거' AS name UNION ALL SELECT 1 as seq, '부대찌개' AS name UNION ALL SELECT 2 as seq, '된장찌개' AS name UNION ALL SELECT 2 as seq, '소고기전골' AS name UNION ALL SELECT 3 as seq, '라면' AS name ) SELECT Name FROM TEST_TABLE FOR XML PATH('..

DB 2024.03.05

WINDOS 단축키

shutdown -a xp에서 바이러스등에 컴이 자동종료안되게 막아줌, 시스템종료 취소 appwiz.cpl : 프로그램 설치/제거 cleanmgr : 디스크정리 compmgmt.msc : 컴퓨터 관리 devmgmt.msc : 장치 관리자 drwtsn32.exe:@오류또는 시스탬꺼야할떄 사용 dfrg.msc : 디스크 조각 모음 @ diskmgmt.msc : 디스크 관리 dxdiag@ : 다이렉트x 진단도구(다이렉트X진단도구 및 그래픽과 사운드의 세부정보를 보여줌) msconfig : 시스템 구성 유틸리티(서비스,시작프로그램 제어등 시스템 상태를 위한 기초적인 환경설정 제공) regedit : 레지스트리편집기 shutdown : 시스템 종료 관련 ntbackup:백업 및 복원 마법사 ★ Calc : 계산기..

오라클 HINT

◆ 개요 힌트는 SQL 튜닝의 핵심부분으로 일종의 지시구문이다. SQL에 포함되어 쓰여져 Optimizer의 실행 계획을 원하는 대로 바꿀 수 있게 해준다. 오라클 Optimizer라고 해서 항상 최선의 실행 계획을 수립할 수는 없으므로 테이블이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것이다. 사용자는 특정 SQL 문장에서 어떤 인덱스가 선택도가 높은지에 대해 알고 있는데 이 경우 오라클 서버의 Optimizer에 의존하여 나온 실행 계획보다 훨씬 효율적인 실행 계획을 사용자가 구사할 수 있다. ◆ 사용 힌트를 사용하여 아래와 같은 것들을 할 수 있다. 액세스 경로, 조인 순서, 병렬 및 직렬 처리, Optimizer의 목표(Goal)를 변경 가능하다. ◆ 오라클 힌트 사용..

DB 2024.03.05

소수점 처리 방법 및 계산시 유의점

소수점 자리 처리는 아래와 같다. 올림 : CEIL EX ) SELECT CEIL([숫자컬럼]) AS [컬럼명칭] FROM [테이블명] 반올림 : ROUND EX ) SELECT ROUND([숫자컬럼], [자릿수]) AS [컬럼명칭] FROM [테이블명] 버림 : TRUNC EX ) SELECT TRUNC([숫자컬럼].[자릿수]) AS [컬럼명칭] FROM [테이블명] DB에서 소수점 처리도 중요하지만 나누기 할때 더 신경써야 한다. 분모는 항상 0인경우를 0나누기 오류가 발생한다. EX ) SELECT CASE WHEN ISNULL([분모],0) = 0 THEN 0 ELSE [분자] / [분모] END FROM [테이블명] 나누기를 소수점으로 표현하고 싶으면 분모를 소수점 표현한 후에 나누어 주면 된다.

DB 2024.03.02
반응형
LIST