본문 바로가기
반응형

전체 글47

[MSSQL] DATEDIFF, DATEADD - 날짜 계산하기 실무에서 " 오늘부터 30일 후 ", " 두 날짜 사이가 며칠인지 ", " 특정 일자로부터 오늘이 며칠째인지" 와 같은 날짜 계산이 필요한 경우가 꽤 자주 있다. 이럴 때 사용하는 함수가 DATEDIFF 와 DATEADD 다. 오늘은 이 두가지 함수를 한 번에 정리해 보려고 한다.Create DataCREATE TABLE #temp_contract( member_nm VARCHAR(20), start_dt DATE, end_dt DATE)INSERT INTO #temp_contract VALUES ('홍길동', '2026-01-01', '2026-06-30')INSERT INTO #temp_contract VALUES ('임꺽정', '2026-03-15', '2026-.. 2026. 6. 22.
[MSSQL] PIVOT - 행을 열로 바꾸기 데이터를 조회하다 보면 행으로 쌓여있는 데이터를 열로 펼쳐서 보고 싶은 경우가 있다. 예를 들어 "월별 매출" 이 행으로 나열되어 있는데, 이걸 1월 ~ 12월 컬럼으로 가로로 펼쳐서 보고 싶은 경우다. 이럴 떄 사용하는 PIVOT 을 오늘 정리해보려고 한다.Create DataCREATE TABLE #temp_fruit( fruit_nm VARCHAR(20), month_nm VARCHAR(10), sales_amt INT)INSERT INTO #temp_fruit VALUES ('사과', '1월', 1000)INSERT INTO #temp_fruit VALUES ('사과', '2월', 1500)INSERT INTO #temp_fruit VALUES ('사과', '3월', 1.. 2026. 6. 19.
[MSSQL] OFFSET, FETCH NEXT - 페이징 처리하기 게시판이나 목록 화면을 만들 때 한 페이지에 N건씩 끊어서 보여주는 페이징 (paging) 처리가 필요하다.TOP만으로는 1페이지(1~10건) 은 처리가 가능해도 2페이지(11~20건) 처럼 중간부터 끊어 가져오는 게 안된다. 오늘은 이럴 때 사용하는 OFFSET / FETCH NEXT 를 정리해보려고 한다.CREATE DATACREATE TABLE #temp_board( seq INT IDENTITY(1,1), title VARCHAR(50), reg_dt DATE)INSERT INTO #temp_board (title, reg_dt) VALUES ('공지사항입니다', '2026-01-01')INSERT INTO #temp_board (title.. 2026. 6. 15.
[MSSQ] EXISTS vs IN - 어느 쪽이 더 빠를까? 서브쿼리로 조건을 걸 때에 EXISTS 를 쓸 지, IN을 쓸 지 고민되는 경우들이 있다. 결과는 같은데 어떤 차이가 있는지 잘 모르고 그냥 써왔던 걸 쓰는 경우가 많다. 오늘은 두 가지의 동작 방식 차이와 상황에 따라 유리한 순간을 정리해보려고 한다.Create Data설명글CREATE TABLE #temp_dept( dept_id VARCHAR(10), dept_name VARCHAR(20))CREATE TABLE #temp_emp( emp_id VARCHAR(10), emp_name VARCHAR(20), dept_id VARCHAR(10))INSERT INTO #temp_dept VALUES ('DEP01', '총무부')INSERT INT.. 2026. 6. 12.
[MSSQL] 임시테이블(#temp), 테이블변수(@table) MSSQL에서 중간 데이터를 잠깐 담아두고 사용하는 임시테이블(#temp)과 테이블변수(@table) 중 어떤 상황에 어떤걸 사용하는 게 좋을 지 고민되는 상황이 있다. 둘 다 데이터를 임시로 저장한다는 점은 같지만, 동작 방식에서 차이가 있다. 상황에 따라 성능 차이가 발생할 수 있기때문에 오늘은 두 가지의 차이를 살펴보고 어떤 상황에 어떤 것을 사용하는 게 좋을지 알아보도록 하자.임시테이블 (#temp)이름 앞에 [ # ] 을 붙여서 생성tempdb에 실제 테이블처럼 생성되며, 세션이 종료되면 자동 삭제인덱스 생성 가능ROLLBACK 가능-- 임시테이블 생성 및 데이터 삽입CREATE TABLE #temp_fruit( fruit_nm VARCHAR(20), fruit_qty IN.. 2026. 5. 13.
[MSSQ] WHILE, BREAK, CONTINUE - 반복문 반복문을 처리하는 건 실무에서 언제나 발생할 수 있으며, 필수로 익혀두어야 하는 부분이다. 이에 오늘은 WHILE 반복문을 통해 동일한 반복 처리를 하는 방법을 함께 살펴보고자 한다.CREATE DATACREATE TABLE #temp_fruit( seq INT IDENTITY(1,1), fruit_nm VARCHAR(20), price INT, is_updated VARCHAR(1))INSERT INTO #temp_fruit VALUES ('사과', 1000, 'N')INSERT INTO #temp_fruit VALUES ('배', 2000, 'N')INSERT INTO #temp_fruit VALUES ('메론', 5000, 'N')INSER.. 2026. 5. 12.
[MSSQL] WITH(NOLOCK) 실무에서 WITH(NOLOCK) 에 대해서 잘 모르고 사용을 하는 경우들을 종종 본다. WITH(NOLOCK) 은 현재 내가 조회하는 쿼리와 상황에 따라 선택적으로 사용을 해야한다. 과거 로그 데이터를 확인하는데 WITH(NOLOCK) 을 붙이지 않는다거나 금액 집계 등 현재 변경되는 데이터에 따라 정확하게 조회해야하는데 WITH(NOLOCK) 을 붙이는 등 정확하게 알지 못하고 붙이는 경우들이 있다. 오늘은 WITH(NOLOCK)이 어떤 것인지에 대해 알아보고 사용해야 하는 상황과 사용하지 않아야 하는 상황에 대해 정리하려고 한다.CREATE DADACREATE TABLE #temp_order( order_id INT, product_nm VARCHAR(20), order_qty.. 2026. 5. 11.
[MSSQL] ISNULL, NULLIF NULL 처리는 실무 쿼리에서 빠지지 않는 기본 중의 기본이자 제일 많이 사용되는 작업이다. 조회 결과에서 NULL 을 다른 값으로 바꾸거나, 반대로 특정 조건일 때 NULL로 만들어야 하는 경우가 생각보다 자주 있다. 오늘은 그때마다 적재적소에 사용하는 ISNULL, NULLIF 함수들의 차이를 한번 살펴보려고 한다.TEST Table & Data Create설명글CREATE TABLE #temp_member( member_nm VARCHAR(20), nickname VARCHAR(20), point INT)INSERT INTO #temp_member VALUES ('김나나', '낭만고양이', 100)INSERT INTO #temp_member VALUES ('이다.. 2026. 5. 8.
[MSSQL] 데이터 타입 변환 ( CAST, CONVERT, TRY_CAST, TRY_CONVERT ) 데이터 변환 함수인 CAST, CONVERT 의 사용법을 알아보려고 한다. 데이터 변환 함수는 실무에서 정말 많이 자주 사용된다. 자료를 추출하거나 레포트를 집계할 때, 데이터를 더하거나 특정 형식으로 변경해주는 일이 빈번하니 사용법을 확실하게 알아보자. CREATE DATA CREATE TABLE #temp_fruit( fruit_name varchar(20), fruit_qty int) INSERT INTO #temp_fruit VALUES ('사과', 5)INSERT INTO #temp_fruit VALUES ('배', 2)INSERT INTO #temp_fruit VALUES ('메론', 1)SELECT * FROM #temp_fruit CAST표준 SQL 방식으로 MSSQL이 아닌 다른 DBMS.. 2026. 1. 9.
[MSSQL] 숫자 반올림, 올림, 내림 (ROUND, CEILING, FLOOR) 데이터 계산을 하다 보면 소수점 자릿수들에 관련되어 처리해야 할 일이 있다. 특히 레포트를 추출하거나 금액 계산 등을 다루기 위해서는 필수적인 반올림, 올림, 내림 함수인 ROUND, CEILING, FLOOR 에 대해서 알아보도록 하자. ROUND ( 반올림 )반올림 처리를 위해 가장 많이 사용되는 함수ROUND ( 숫자, 자릿수, [반올림여부])자릿수 : 0 은 소수점 첫째 자리에서 반올림, 1은 소수점 둘째 자리에서 반올림을 의미반올림여부 : 생략하거나 0 이면 반올림, 1이면 버림으로 처리SELECT ROUND(95.456, 0), ROUND(95.456, 1), ROUND(95.456, 2), ROUND(95.456, 0, 1) 예제에서 보듯이 자릿수에 0, 1, 2 에 따라서 소수점 자릿수에.. 2026. 1. 8.
반응형