SQL2010. 3. 22. 11:13

SQL Server에서 쿼리문 작성시 IF문을 종종 사용한다.
하지만 SELECT문 안에서는 IF문을 사용할 수가 없어 답답한 경우가 많다.
SQL Server에서는 SELECT문에서 IF문을 사용할 수 없는 대신 CASE문을 제공하고 있다. CASE문을 사용하면 SELECT문안에서도 IF문의 효과를 누릴 수 있다.

CASE 함수는 다중 IF문과 같은 구조를 가진다. 더불어 SELECT 구문 같은 DML과 연동을 해서 행 단위의 조건 처리가 가능하다는 특징을 가지고 있기 때문에 복잡한 쿼리 작성 시에 필수적으로 사용된다.

기본적인 구문>
1. CASE 함수는 지정된 조건식을 평가하고, 조건에 만족하는 결과 중 하나를 리턴한다.
2. CASE 함수는 다음과 같은 항목들로 구성된다.

CASE 키워드
변환할 열 이름
검색할 식을 지정하는 WHEN절 및 이를 바꿀 식을 지정하는 THEN 절
END 키워드
CASE 함수의 별칭을 정의하는 선택적 AS 절

형식별 CASE 함수>
1. 단순 CASE 함수
  - 조건식이 한 번만 지정되고 WHEN절에는 조건식과 비교할 상수값만 선언한다. 각각의 WHEN절을 비교해 조건에 만족하면 THEN절 다음의 구문이 실행된다.

syntax 1.

CASE input_expression!
WHEN when_expressionŋ THEN result_expressionŋ
WHEN when_expressionŌ THEN result_expressionŌ
[ ...n ]
[ ELSE else_result_expression! ]
END

2. 검색된 CASE 함수 (CASE 절에는 아무런 조건식도 오지 않는다)
  - 각 WHEN절에 필요한 조건식을 별도로 지정할 수 있다.조건이 만족하면 THEN절 다음에 명령이 실행된다.

syntax 2.

CASE
WHEN Boolean_expressionŋ THEN result_expressionŋ
WHEN Boolean_expressionŌ THEN result_expressionŌ
[ ...n ]
[ ELSE else_result_expression! ]
END

NOTE: THEN절 다음에는 일반 상수값 뿐만 아니라 함수나 심지어 또 다른 쿼리문이 올 수도 있다. 반드시 잊지 말 것은 result_expression!은 반드시 하나의 값을 리턴해야 한다는 것이다. 하지만 행 단위로 각각의 검색 조건이 반복 실행되므로, 성능에 관한한 최상의 결과를 얻기는 힘들다.

예제>

  - 여기서 CASE문은 컬럼에 표시할  때 조건에 따라 다르게 표시하도록 조건을 줄 때 사용하였다.

SELECT [Name], SocID, PayFlag, PayDate, SUM(PayAmount) AS PayAmount
FROM (
 SELECT P.[Name] AS [Name], P.SocID AS SocID, AP.PayFlag, CONVERT(VARCHAR(10), AP.UserPayDate, 121) AS PayDate,
  (CASE
   WHEN (AP.Cash+AP.Card) < AP.Cost03 THEN (AP.Cash+AP.Card)-AP.Cost01
   WHEN (AP.Cash+AP.Card) >= AP.Cost03 THEN AP.Cost03
  END) AS PayAmount

  FROM xdo_AccountPay AP
   INNER JOIN xdo_Account A ON A.AccountID = AP.AccountID
   INNER JOIN xdo_Patient P ON P.PatientID = A.PatientID
   WHERE AP.Cost03 > 0
    AND (CONVERT(VARCHAR(10), AP.UserPayDate, 121) BETWEEN  @csBeginPayDate AND @csEndPayDate)
    AND AP.PayFlag = 9
 ) AS SUBMAIN
GROUP BY [Name], SocID, PayFlag, PayDate
ORDER BY PayDate

CASE를 사용한 조건 데이터 처리>
  - 실제로 CASE문을 필요로 하는 것은 바로 DML 명령들이다. select 구문을 처리되는 집합 중 특정 컬럼값에 기초한 조건을 기준으로 테이블에는 없지만 새로운 집합에 포함돼야 할 컬럼을 새로 생성하고, 그 컬럼값을 추출, 가공, 연산하는 용도로 곧잘 사용된다. 즉 select되는 각각의 행(row, record)에 대해 조건을 부여하고 조건에 만족하는 결과를 새로운 컬럼값에 할당하는 것이다. CASE문을 조건 데이터 처리와 함께 사용한 경우에 두 가지 특징을 볼 수 있다.

CASE의 특징
1. 행 단위의 조건 처리가 가능
2. 새로운 컬럼 생성

CASE 함수는 다양한 상황의 문제 해결에 활용될 수 있다. 참고로 T-SQL에는 CASE와 유사한 COALESCE()함수가 있다.

Posted by 쿵캉켕
SQL2010. 3. 22. 11:11

응용프로그램과 연동된 저장프로시저를 디버깅하고 싶어 자료를 찾던 중 데브피아에서 발견한 문서입니다. 쿼리분석기에 저장프로시저의 디버그가 있지만 그것보단 프로필러를 사용한 방법이 더 쉽고 보기 편한 것 같아 올립니다.



출처: 데브피아.

Posted by 쿵캉켕
기타2010. 3. 22. 11:08

ASSOC    파일 확장명 연결을 보여주거나 수정합니다.
AT       명령어와 프로그램의 실행을 스케줄합니다.
ATTRIB   파일 속성을 표시하거나 바꿉니다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지웁니다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD       현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP     활성화된 코드 페이지의 번호를 표시하거나 설정합니다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLS      화면을 지웁니다.
CMD      Windows 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR    콘솔의 기본색과 배경색을 설정합니다.
COMP     두 개 또는 여러 개의 파일을 비교합니다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERT  FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는
         변환할 수 없습니다.
COPY     하나 이상의 파일을 다른 위치로 복사합니다.
DATE     날짜를 보여주거나 설정합니다.
DEL      하나 이상의 파일을 지웁니다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP 두 플로피 디스크의 내용을 비교합니다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DOSKEY   명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.
ECHO     메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.
ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE    하나 이상의 파일을 지웁니다.
EXIT     CMD.EXE 프로그램(명령 인터프리터)을 마칩니다.
FC       두 파일 또는 파일의 집합을 비교하여 다른 점을
         표시합니다.
FIND     파일에서 텍스트 문자열을 찾습니다.
FINDSTR  파일에서 문자열을 찾습니다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMAT   Windows에서 사용할 디스크를 포맷합니다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTO     Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진
         줄로 가게 합니다.
GRAFTABL Windows가 그래픽 모드에서 확장 문자 세트를 표시할
         수 있게 합니다.
HELP     Windows 명령어에 관한 도움말을 제공합니다.
IF       일괄 프로그램에서 조건 처리를 수행합니다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD       디렉터리를 만듭니다.
MKDIR    디렉터리를 만듭니다.
MODE     시스템 장치를 구성합니다.
MORE     출력을 한번에 한 화면씩 표시합니다.
MOVE     하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE    일괄 파일의 처리를 보류하고 메시지를 보여줍니다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT    텍스트 파일을 인쇄합니다.
PROMPT   Windows 명령 프롬프트를 바꿉니다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD       디렉터리를 지웁니다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM      일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN      파일 이름을 바꿉니다.
RENAME   파일 이름을 바꿉니다.
REPLACE  파일을 대체합니다.
RMDIR    디렉터리를 지웁니다.
SET      Windows 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.
SHIFT    일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SORT     입력을 정렬합니다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST    경로를 드라이브 문자로 지정합니다.
TIME     시스템 시간을 보여주거나 설정합니다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE     텍스트 파일의 내용을 보여줍니다.
VER      Windows 버전을 보여줍니다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지
         여부를 지정합니다.
VOL      디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY    파일과 디렉터리 트리를 복사합니다.

Posted by 쿵캉켕
기타2010. 3. 22. 11:07

윈도우 모드로 백업하기

을 클릭하세요.

 

을 클릭하세요.

 

원본에서 백업할 디스크 또는 파티션(드라이브)를 선택▶대상에서 파일 체크▶ 을 클릭하세요. (원본을 보면 Disk1, Disk2로 나온걸로 봐서 하드 디스크가 2개이고 Disk1에는 C,D,E 3개의 파티션으로 나누어져 있다는 것을 알 수 있습니다.)

 

백업한 파일을 저장할 위치를 지정하기 위해 를 클릭하세요.

 

백업파일 이름을 지정하고 을 클릭하세요.

 

을 클릭하세요.

 

테스트 컴퓨터에는 IEEE1394포트가 있기 때문에 아래와 같은 창이 나타났는데 창이 나타나면 을 클릭하고 없으면 아래와 같은 창이 나타나지 않습니다.

 

 압축율을 지정하기 위해 을 클릭하세요.

 

압축 탭을 클릭하고 압축 단계를 체크하고 을 클릭하세요.(상식이지만 압축율이 높으면 파일 크기는 작아지지만 속도는 느려지고 압축율이 낮으면 그 반대입니다. 빠름이나 높음을 체크하면 됩니다.)

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하면 컴퓨터가 다시 부팅되면서 백업 과정이 표시됩니다.

 

백업 과정이 표시됩니다.

 

 지정한 폴더로 이동하면 백업된 파일이 만들어진 것을 확인할 수 있습니다.

(2) 시디로 직접 백업하기

고스트 2003에서는 백업한 파일을 하드디스크에 저장했다가 다시 시디로 구워야 하는 번거러움 없이 바로 시디로 백업할 수 있는 간편한 방법을 제공합니다.

CD-RW에 공시디를 넣고 을 클릭하세요.

 

을 클릭하세요.

 

원본에서 백업할 디스크 또는 파티션을 선택▶대상에서 기록 가능 CD 또는 DVD를 선택▶ 을 클릭하세요.

 

을 클릭하세요.

 

테스트 컴퓨터에는 IEEE1394포트가 있기 때문에 아래와 같은 창이 나타났는데 창이 나타나면 을 클릭하고 없으면 아래와 같은 창이 나타나지 않습니다.

 

 압축율을 지정하기 위해 을 클릭하세요.

 

압축 탭을 클릭하고 압축 단계를 체크하고 을 클릭하세요.(상식이지만 압축율이 높으면 파일 크기는 작아지지만 속도는 느려지고 압축율이 낮으면 그 반대입니다. 빠름이나 높음을 체크하면 됩니다.)

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하면 컴퓨터가 다시 부팅되면서 백업 과정이 표시됩니다.

 

시디로 직접 백업되는 과정이 표시됩니다. 백업한 용량이 시디 한 장이 넘는 경우 중간에 새 시디를 넣으라는 메시지가 나오면 공 시디를 넣고 Enter키를 눌러주면 됩니다.

 

 백업된 시디롬을 보면 시디에 직접 백업된 파일을 볼 수 있습니다. 첫 장의 파일명은 CDR00001입니다.  파일이름 지정형식으로 CDR00001, CDR00002, CDR00003이런식으로 표시됩니다.





(3) 도스모드에서 백업하기

도스모드에서 백업은 고스트를 하드디스크에 직접 설치할 필요없이 고스트 2003에서 만든 부팅디스크만으로 백업하려고 할 때 이용하면 됩니니다. 참고로 고스트 2003에서 부팅하면 자동으로 고스트가 실행됩니다. 그리고 모양은 도스모드처럼 보이지만 마우스를 이용할 수가 있어 편리합니다.

Ok를 클릭하세요.

 

LocalPartitionTo Image를 선택하세요.

 

원본이 있는 디스크를 선택하고 OK를 클릭하세요.

 

선택한 디스크에 있는 파티션을 선택하고 OK를 클릭하세요. 

 

백업한 파일을 저장할 드라이브를 지정▶파일 이름 지정▶Save를 클릭하세요.

 

압축율을 선택하고 Enter키를 누르세요.

 

진짜 백업할 것인가를 묻는 창이 나타나는데 Yes를 클릭하세요.

 

백업 과정이 표시됩니다.

 

Continue를 클릭하세요.

 

Quit를 클릭하세요.

 

Yes를 클릭하면 도스 모드를 빠져 나오고 재부팅을 합니다.


 

(4) 윈도우 모드에서 복구하기

을 클릭하세요.

 

을 클릭하세요.

 

백업해 놓은 파일을 지정하기 위해 를 클릭하세요.(백업해 놓은 파일은 하드디스크에 있든 시디롬에 있든 상관없습니다.)

 

백업해놓은 파일을 선택하고 을 클릭하세요.

 

복구하기 전에 백업된 파일의 내용을 보려면 을 클릭해 보세요.

 

을 클릭하세요.

 

원본에서 백업한 파티션을 선택▶대상에서 복구할 파티션을 선택하고 을 클릭하세요.

 

Windows 덮어쓰기를 체크하고 을 클릭하세요.

 

테스트 컴퓨터에는 IEEE1394포트가 있기 때문에 아래와 같은 창이 나타났는데 창이 나타나면 을 클릭하고 없으면 아래와 같은 창이 나타나지 않습니다.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하면 컴퓨터가 다시 부팅되면서 복구 과정이 표시됩니다.

 


5) 도스모드에서 복구하기

Ok를 클릭하세요.

 

LocalPartitionFrom Image를 선택하세요.

 

백업해 놓은 파일이 시디로 있으면 시디롬을 선택하세요.

 

백업 파일을 선택하고 Open을 선택하세요.

 

원본을 선택하고 OK를 클릭하세요.

 

복구할 대상 디스크를 선택하고 OK를 클릭하세요.

 

선택한 디스크에서 복구할 파티션을 선택하고 OK를 클릭하세요.

 

복구할 파티션을 덥어쓰게 된다는 경고 창이 나타나는데 Yes를 클릭하세요.

 

복구되는 과정이 표시되고 백업한 시디가 2장 이상이면 다음 시디를 넣으라는 창이 나타나는데 다음 시디를 넣고 Enter키를 누르세요.

 

복구가 끝나면 부팅디스켓을 빼고 Reset Computer를 클릭하세요.

(6) 윈도우 모드에서 파티션 복사하기

 

을 클릭하세요.

 

원본에서 복제할 디스크 또는 파티션을 선택하고 대상에서 붙여넣을 디스크 또는 파티션을 선택하고 을 클릭하세요. 디스크(Disk1)를 선택하고 그 디스크안에 있는 모든 파티션이 자동으로 선택됩니다. pc방과 같이 똑같은 사양의 컴퓨터가 여러대인 경우 원본에서 디스크를 선택하고 대상에서도 디스크를 선택하면 아주 간단하게 또같은 디스크가 하나 생성됩니다. 대상 디스크는 포맷을 하거나 파티션을 나누어 놓을 필요가 없습니다.

 

Windows 덮어쓰기를 체크하고 을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하면 컴퓨터가 다시 부팅되면서 백업 과정이 표시됩니다.

(7) 도스모드에서 파티션 복사하기

Ok를 클릭하세요.

 

LocalPartitionTo Partition을 선택하세요.

 

원본 디스크를 선택하고 OK를 클릭하세요.

 

선택한 파티션에서 복사할 파티션을 선택하고 OK를 클릭하세요.

 

복사한 파티션을 붙여넣을 대상 디스크를 선택하고 OK를 클릭하세요.

 

대상 디스크에서 복사한 파티션을 붙여넣을 파티션을 선택하고 OK를 클릭하세요.

 

대상 파티션을 덮어쓴다는 경고창이 나오는데 Yes를 클릭하세요.

 

복사과정이 나타납니다.

 

디스크(파티션) 복사가 끝났으면 부팅디스켓을 빼고 Reset Computer를 클릭하세요.

(8) 부팅디스크 만들기

부팅디스크는 윈도우로 부팅되지 않는 긴급 상항이나 윈도우가 설치되지 않은 상태에서 사용하는 것으로 도스모드처럼 보이지만 마우스를 이용할 수 있어 편리합니다.

을 클릭하세요.

 

표준 Ghost 부트 디스크를 선택하고 을 클릭하세요.

 

자신의 컴에 사용되는 특별한 장치가 있으면 필요한 장치에 체크해주고 아니면 기본값 그대로 두고 을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

을 클릭하세요.

 

 디스켓을 포맷하려면 을 클릭하세요.

 

 을 클릭하면 포맷을 시작합니다.

 

을 클릭하세요

 

을 클릭하세요.

 

 부팅에 필요한 파일을 복사합니다.

 

을 클릭하세요.

 

출처 : http://blog.daum.net/whomiko/11489334


Posted by 쿵캉켕
기타2010. 3. 22. 11:05

    Windows Vista에서는 관리자 권한에서 실행해야 하는 부분들이 존재한다.

     

    Vista에서는 내가 Administrators 그룹이라 할지라도 UAC라는 기능때문에 설치 또는 관리적인 작업이 필요시는 권한상승을 묻거나, 사용자 계정/ 패스워드를 넣어야만 진행이 가능하다.

     

    그리하여 일반적인 Application 개발시는 그 점을 유의해야 한다.

    Manifest 파일을 어떻게 추가 있는지 방법을 알아 보겠다

     

    C#으로 Win Form Application 간단히 만든다고 생각하자

  1. 정상적으로 빌드되어 vistakms.exe 파일 생겼다고 하자
  2. 메모장 또는 VS2005에서 vistakms.exe.manifest 파일을 생성한다.
  3. 생성된 vistakms.exe.menifest 아래와 같은 코드를 붙여 넣기한다

     


  4. 가장 가운데 3줄의 소스가 중요하다.

    옵션을 선택 가능한데, 옵션은 아래와 같이 3가지이다.

    asInvoker어플리케이션이 부모 프로세스와 동일한 토큰으로 실행됩니다.

    highestAvailable어플리케이션이 현재 사용자가 사용할 수 있는 최고 권한으로 실행됩니다.

    requireAdministrator어플리케이션이 관리자에 대해서만 실행되므로 관리자의 전체 토큰으로 어플리케이션을 시작해야 합니다.

     

  5. vistakms.exe.menifest 파일을 abc.exe 파일과 동일한 폴더에 위치 시킨다. 작업하기 편하게 하기 위해
  6. 명령창을 띄우고, mt.exe 파일이 여부를 확인하고, 없다면, 다운로드 받아 설치 한다.
  7. 명령 프롬프트 창에서 다음과 같이 명령어를 입력한다.

    mt -manifest vistakms.exe.manifest -outputresource:vistakms.exe;#1

     

     

8. 완료 폴더에 가보게 되면

 

 

 

9.방패모양이 나타난것을 있다. 위의 방패 모양이 나타난다는 것은 실행파일 vistakms.exe 파일을 실행시 권한 여부를 묻게되고 실행을 하면 관리자 권한으로 상승되어 설치되는 것을 있다.

Posted by 쿵캉켕
기타2010. 3. 22. 11:02

CMD에서 레지스트리를 추가/삭제하는 문장입니다.




위 사진에 설명을 더 잘해놨습니다.
되도록 위 사진을 보는걸 추천합니다.

예를들어, 레지스트리HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run에
이름이 runcw, 종류가 reg_sz, 데이터가 c:\인 키를 추가한다면,

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v runcw /t reg_sz /d c:\


라고 명령어를 넣으면 레지스트리에 추가 됩니다.

한 칸을 비울때, 예를 들어 값만 두고 데이터를 없게 한다면 이렇게 입력합니다.
 - (레지스트리 경로) /v (값이름) /t (값종류) /f

 - /t 를 생략하면, 값은 자동으로 REG_SV가 됩니다.
 - /f : 레지스트리를 확인 없이 추가할 때 쓰임


출처 : http://nonamenote.tistory.com/28

Posted by 쿵캉켕