프로그래밍/MSSQL (76) 썸네일형 리스트형 [MSSQL] WHERE CASE WHEN 조건절에 조건문 WHERE 절에서 CASE WHEN을 사용해보자 예제1. 과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 0점인 ROW 조회 SELECT * FROM TBL_TEST WHERE Score = (CASE WHEN @in_Subject = 'Math' THEN 100 ELSE 0 END) 위의 쿼리는 아래와 같이 AND OR 조건으로 바꿔 사용할 수도 있다. SELECT * FROM TBL_TEST WHERE (@in_Subject = 'Math' AND Score = 100) OR (@in_Subject 'Math' AND Score = 0) 예제2. 과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 전체 ROW 조회 SELECT * FROM TBL_TEST WHERE (CASE W.. [MSSQL] DISTINCT, GROUP BY 중복제거 DISTINCT 와 GROUP BY 를 비교해보자 DISTINCT 유니크한 데이터를 조회하는 경우 즉, 중복된 결과를 제거하고자 할 때 사용한다. GROUP BY 데이터를 그룹핑해서 조회하는 경우 비교 SELECT DISTINCT Col1 FROM Table_A SELECT Col1 FROM Table_A GROUP BY Col1 위의 쿼리는 중복을 제거하기 위해 작성된 쿼리다. 동일하게 처리하는 듯 하지만 두 쿼리는 차이가 있다. DISTINCT는 단순 그룹핑 작업한 수행하지만, GROUP BY 는 그룹핑 작업 + 정렬 작업을 동반한다. 따라서, 정렬 작업이 필요없을 경우 DISTINCT 를 사용하는 것이 성능상 좋다. [MSSQL] GROUP BY 없이 HAVING이 단독으로 오는 경우 [MSSQL].. [MSSQL] 0으로 나누기 오류가 발생했습니다. 0으로 나누기 오류가 발생했습니다. 해당 쿼리 상단에 SET 선언 SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF SET ANSI_WARNINGS ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 오류 메세지가 발생한다. 값을 OFF로 설정하면 0으로 나누기 및 산술오버플로 오류로 인해 NULL값이 반환된다. SET ARITHIGNORE ON/OFF 오류 메세지가 리턴되는 상황을 제어한다. SET ARITHABORT ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 트랜잭션에서 해당 오류가 발생하면 트랜잭션이 롤백된다. (하지만 INSERT, UPDATE.. [MSSQL] DB LOCK 확인 및 해제 DB가 갑자기 느려질 경우 LOCK을 확인해보자 LOCK 걸린 SPID 확인 EXEC sp_lock SPID : 잠금을 요청하는 프로세스의 세션 ID DBID : 데이터베이스의 식별번호 OBID : 개체의 식별번호 INDLD : 인덱스의 식별번호 TYPE : 잠금유형 RESOURCE : 리소스 식별값 MODE : 잠금 STATUS : 잠금요청상태 MODE S : 공유 잠금 U : 업데이트 잠금 X : 독점 잠금 IS : 의도 공유 IU : 의도 업데이트 IX : 독점 의도 BU : 대량 업데이트 수행된 쿼리 정보 확인 DBCC inputbuffer (spid값) SPID 관련 정보 확인 EXEC sp_who (spid값) 해당 프로세스 종료 kill (spid값) [MSSQL] SEQUENCE 시퀀스 시퀀스를 이용해서 별도의 유니크한 번호를 생성해보자 시퀀스 생성 CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH ] [ INCREMENT BY ] [ { MINVALUE [ ] } | { NO MINVALUE } ] [ { MAXVALUE [ ] } | { NO MAXVALUE } ] [ CYCLE | { NO CYCLE } ] [ { CACHE [ ] } | { NO CACHE } ] [ ; ] 예제 다음과 같은 정수형 시퀀스를 생성해보자 CREATE SEQUENCE [dbo].[SEQ_TEST_NO] AS [int] -- 정수형 STA.. 이전 1 ··· 9 10 11 12 13 14 15 16 다음