본문 바로가기

sqlserver

[SqlServer] 커서(CURSOR) 사용법 커서(CURSOR) 사용법 - SqlServer 가끔 커서를 써서 데이터를 처리해야 할 필요가 있습니다. 간단한 예제를 통해서 사용법을 적어 봤습니다. 유저테이블(UserTable)에서 삭제된(UseYN=’N’) 사용자들만 조회해서 삭제유저테이블에(DeleteUserTable)에 저장하는 예제 입니다. 뭐 이렇게 번거롭게 커서를 써서 할 필요 없는 쿼리지만 그저 예제를 구성하기 위함이니 탓하지 마시기를^^ --커서 데이터를 가져올 변수 선언 DECLARE @UserID VARCHAR(10) DECLARE @UserName VARCHAR(50) --커서 선언하면서 조회된 데이터를 담습니다. DECLARE db_cursor CURSOR FOR SELECT UserID, UserName FROM UserTab..
[SqlServer] 행번호 업데이트 행번호 업데이트 - SqlServer 데이터를 입력하고 삭제하다 보면 순번열이 틀어지는 경우가 발생합니다.그럴때 조회된 순서대로 번호를 다시 업데이트 하고 싶어서 안달이 납니다.안달나실때 아래 예제를 돌려 보시면 쉽게 처리 방법을 알수 있습니다~ --임시 테이블을 생성 DECLARE @Temp TABLE ( Field VARCHAR(10) --구분 ,PlanYYMM VARCHAR(6) --계획월 ,Seq INT --순서 ); --데이터 입력 INSERT INTO @Temp VALUES('정리','201401', 2); INSERT INTO @Temp VALUES('정리','201402', 3); INSERT INTO @Temp VALUES('정리','201403', 4); INSERT INTO @Temp..
[SqlServer] 프로시저 결과 테이블 변수에 담기 프로시저 결과 테이블 변수에 담기 - SqlServer 대부분 프로시저를 통해서 프로그램을 짜는데 간혹 프로시저내에서 다른 프로시저를 호출하는 경우가 생깁니다. 그저 이렇게 간단한 경우엔 호출하면 끝나지만 다른 프로시저를 호출한 결과값을 가지고 다른 작업을 더 해야 하는 경우도 발생 합니다. 그럴땐 테이블 변수에 넣고 작업 하면 됩니다. --결과값과 스키마가 똑같은 테이블 변수를 생성 DECLARE @Table TABLE ( UserID INT , UserName VARCHAR(100) ); --프로시저를 결과값을 테이블 변수에 저장 INSERT INTO @Table EXEC GetUserList ''; --조회 SELECT * FROM @Table
[SqlServer] 월별 누계 금액 구하기 월별 누계 금액 구하기 - SqlServer 금액과 관련해서 조회 할때 꼭 나오는 누계 금액 구하기 입니다. 여기서는 기부금이 매달 입금되는 테이블을 예로 들어서 설명 해보겠습니다. 기부받는곳에 매달 얼마의 금액에 입금되고 누계된 금액은 얼마인지를 알고 싶을때 조회 하는 쿼리 입니다. 예를 들어 달동네에 2014년 1월엔 2만원, 2014년 2월엔 5만원이 입금되었을때 아래와 같이 보고 싶은것 입니다. 기부처 년월 기부금 누계 기부금 달동네 2014/1 2만원 2만원 달동네 2014/2 5만원 7만원 --임시 테이블을 생성 DECLARE @Temp TABLE ( Field VARCHAR(10) --기부받는곳 ,InputYYMM VARCHAR(6) --입금년월 ,Amount INT --입금액 ); --데이..
[SqlServer] 분기별 실적 쿼리 하기(DATEPART 기능 사용) 분기별 실적 쿼리 하기(DATEPART 기능 사용) - SqlServer 분기별로 데이터를 뽑아서 보고서를 만드는 경우가 꽤 있습니다. 년별 분기별 판매금 합계를 구해 오세요~ 라고 하면 DATEPART 기능을 사용해서 쿼리하면 됩니다. 작은 예제를 통해서 해봤습니다. --임시 테이블을 생성 DECLARE @Temp TABLE ( SaleDate DATETIME --판매일 ,SaleAmout DECIMAL --판매금 ); /* 1월 ~ 3월 : 1분기 4월 ~ 6월 : 2분기 7월 ~ 9월 : 3분기 10월 ~ 12월 : 4분기 */ --데이터 입력 INSERT INTO @Temp VALUES('2013-01-04', 2000000); --1분기 INSERT INTO @Temp VALUES('2013-0..
[SqlServer] PIVOT 기능 사용하기(행열 변환) PIVOT 기능 사용하기(행열 변환) - SqlServer 행을 열로 변환 할때 사용하는 기능입니다. 실무에서 년월단위로 데이터가 입력된 경우에 빈번하게 사용하게 됩니다. 운동 계획을 예로 들어봤습니다. --임시 테이블을 생성 DECLARE @Temp TABLE ( Field VARCHAR(10) --구분 ,PlanYYMM VARCHAR(6) --계획월 ,PlanQty INT --계획수량 ); --데이터를 월단위로 입력한다. INSERT INTO @Temp VALUES('벤치프레스','201401', 20); INSERT INTO @Temp VALUES('벤치프레스','201402', 30); INSERT INTO @Temp VALUES('벤치프레스','201403', 40); --케틀벨을 월단위로 10..
[SqlServer] 실행 프로시저 찾기 실행 프로시저 찾기 - SQL SERVER 프로파일러 개발하다 보면 프로그램 소스를 보지 않고 그냥 실행되는 프로시저만 보고 싶을때가 있다. 혹은 프로그램에서 데이터베이스로 넘겨지는 매겨변수 값까지 확인하고 싶을때도 많다. 그럴때 유용한 것이 프로파일러이다. 사용법은 간단하다. 프로그램을 실행시켜 자신이 사용하는 데이터베이스에 연결 한다. 연결뒤에 파일 > 새추적 을 클릭하면 아래와 같은 화면이 뜨는데 이벤트 선택 탭으로 가서 Stored Procedures > RPC:Starting 을 선택해주고 실행 버튼을 클릭한다. 이제 프로파일러는 프로시저가 실행될때 마다 추적한 결과를 보여준다. 리스트를 클릭해 보면 하단에 어떤 매개변수를 통해서 어떤 프로시저가 호출 되었는지를 볼수 있다. 디버깅 할때 유용한 ..
[SqlServer] 데이터에서 숫자만 빼고 특수문자들 제거 하기 우편번호나 전화번호등의 숫자들만 필요한 데이터에서 숫자만 남겨두고 제거 하는 방법이다.Sqler.com 을 보다가 함수로 만들어 놓은게 있어서 테스트 할겸 해서 펼쳐 봤다. DECLARE @InString VARCHAR(20)DECLARE @cleanString VARCHAR(20) SET @InString = '151*5-5!5' --initialize String to not null SET @cleanString = '' --create a variable to use in looping thru string DECLARE @position INT SET @position = 1 --get length of input string DECLARE @strLength INT SET @strLength ..