반응형
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

CANIAS[TROIA] TROIA 이벤트 및 컨트롤 속성 정리

Troia 컨트롤 이벤트 GainFocus(*) : 선택할때 Focus가 되면 사용 LostFocus : 선택후 Focus가 다른곳으로 이동했을때 사용 TextChanged(*) : 글자 변경시 사용 ZoomBefore : Zoom 다이얼로그 팝업 이전 사용 ZoomAfter(*) : Zoom 다이얼로그 팝업 이후 사용 컨트롤 속성 X : X좌표 Y : Y좌표 Width : 넓이 Height : 높이 Theme Variables : 컨트롤 테마 Length : 컨트롤 길이( data보다 길이가 짧은 경우 컨트롤이 빨간색으로 변함) Jestification : 정렬 Read Only : 읽기 쓰기 모드 SGPID : 컨트롤에 값 상속받을 name Set Parameters Get Parameters Zoo..

테이블 구조를 변경하고자 할때

MSSQL 사용하는 프로젝트를 뛰고 있어서 MSSQL로 작성해보았다. 계속해서 DATA 가 쌓이는 경우가 아니라면 항상 백업으로 DATA를 만들고 테이블을 다시 생성후 백업한 DATA를 넣는게 좋다 개발할때 항상 유용하게 사용하는 방법을 공유하고자 한다. 컬럼 하나를 추가하는데 초심자들은 DROP 해서 DATA도 삭제하는 경우가 많은데 물어보면 DATA 옮기는게 힘들거나 귀찮다는 분들이 있는데 아래의 방법으로 귀찮더라도 생활하 하자 나의 경우는 3번과 5번을 동일 편집기에 넣고 실행시킨다. 1번부터 4번까지 하는데 익숙해 지면 2분도 걸리지 않는다. 1. DATA백업 SELECT * INTO TMPTTABLE FROM TTABLE 2. 테이블 스키마 생성 테이블 마우스 우클릭 -> 테이블 스크립트 -> ..

DB 2024.03.01

프로시져 오류처리 방법

MSSQL 프로시져를 만들었을때 오류 처리 해주는게 좋지 않을까한다. SELECT 문은 필요로 하지 않지만 CURSOR를 통해서 INSERT문 DELETE문을 만들때는 TRY구문으로 오류처리 해주기를 바란다. TRY CATCH문을 사용하여 오류가 발생시에 PRINT문으로 찍어보거나 실행내용을 DB에 남기는 방법중 하나를 택하기 바란다. DB에는 컬럼을 상황에 맞게끔 CLOB, BLOB 형태로 만드는게 좋으며 나는 DB만드는게 귀찮다 하시면 PRINT를 찍어도 무방함 EX===================================================== BEGIN CATCH IF ERROR_STATE() = 1 BEGIN SELECT @P_LOG = '[ERROR]NUMBER : ' + CON..

DB 2024.02.29

CANIAS[TROIA] 날짜 가져오기

현재날짜 : SYS_CURRENTDATE 일자추가 : ADDDAYS ({variable_name}, {length}); 시간추가 : ADDHOURS ({variable_name}, {length}); 분추가 : ADDMINUTES ({variable_name}, {length}); 월추가 : ADDMONTHS ({variable_name}, {length}); 년추가 : ADDYEARS ({variable_name}, {length}); EX ) ADDDAYS(SYS_CURRENTDATE, 1) 해당년월의 첫째날 구하기 : FIRSTDATEINMONTH ({month}, {year}); EX ) FIRSTDATEINMONTH(GETMONTH(SYS_CURRENTDATE), GETYEAR(SYS_CURRE..

CANIAS[TROIA] 통화 단위에서 소수점 없애기

1. GRID에서 CURRENCY 라는 컬럼 추가 2. GRID에서 변경할 금액 컬럼에 Unit Options -> Unit Field에 CURRENCY 추가 3. 쿼리문에 'KRW' AS CURRENCY 추가 KRW 는 한국 통화 단위이다 나라별로 하고 싶으면 TABLE에 CURRENCY 컬럼을 추가후 변경하고자 하는 통화 단위를 입력하면 됨 그런데 이건 자체 기능은 아닌 만든 기능이라는 생각이 듬 왜냐면 도움말에서 찾을수 없기 때문에 일단 현재 사이트에서는 위에걸로 적용 가능하니 기재만 함

CANIAS[TROIA] 자주 사용하는 화면 및 TROIA 명령어

DEVT06 : 핫라인 관리 DEVT01 : 데이터베이스 브라우저 DEVT03 : 체크테이블 생성 마법사 DEVT04 : Dialog 관리 DEVT00 : Class 관리 DEVT40 : SQL Tool DEVT31 : TRACE 추적 (LOG 추적) DEVT11 : RUNCODE 테스트 대화상자( 소스코드 테스트) DEVT07 : 소스코드 문자열 검색 BAST01 : 체크테이블 호출 SYST12 : 체크테이블 삭제 및 정보 확인 SYST00 : 시스템 가젯 설정 ( TCODE 생성) 일반적인 화면 컨트롤 명령어 CTRL + 5 : 검색 명령어 앞뒤 % 붙히기 F3 : 검색 F10 : 컨트롤 초기화 F7 : SHOW 호출 F6 : CHANGE 호출 TROIA 명령어 CTRL + SHIFT + C : 주석..

CANIAS[TROIA] 소스 코드 명령어

SYS_CLIENT : 로그인한 시스템 CLIENT SYS_LANGU : 로그인한 언어 SHUTDOWN : 현재 화면을 닫음 NOTSELECTED : 체크테이블 검색 조건이 존재하지 않을때 SELECTED : 체크테이블 검색 조건이 존재할때 CP(AAA) : 괄호안에 선언된 변수를 ''로 감싸는 경우 CALL DIALOG 화면명 : 화면을 호출 EX ) CALL DIALOG NEWDIALOG; DIALOG.화면명.함수 : 명명된 화면에서 함수를 호출 EX ) DIALOG.NEWDIALOG.SEARCH(); SET 컨트롤명 TO HIDE : 컨트롤을 숨김 EX ) SET SHOW TO HIDE SET 컨틀롤명 TO DISABLE : 컨트롤을 비활성화 EX ) SET SHOW TO DISABLE MESSAG..

반응형
LIST