목록DB/MSSQL (3)
혜미의 개발 일지
일별, 주별, 월별, 년도별 통계 DATEPART, DATENAME 함수 이용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -- 일 단위로 카운트 SELECT DATEPART(DAY, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(DAY, 날짜) -- 주 단위로 카운트 SELECT DATEPART(WEEK, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(WEEK, 날짜) -- 월 단위로 카운트 SELECT DATEPART(MONTH, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(MONTH, 날짜) -- 년 단위로 카운트 SELECT DATEPART(Y..
MSSQL 은 기본적으로 SELECT 시 공유잠금(S Lock) 이 걸린다. 이는 MSSQL 의 기본 격리수준(Isolation Level) 이 Read Committed 이기 때문이다. 즉, DML(INSERT, UPDATE, DELETE) 작업중인 ROW 또는 TABLE 에 SELECT 할 경우, 해당 작업이 끝나야 SELECT 할 수 있다는 의미이다. 만일 이렇게 수행된다면 DB의 성능은 떨어지고, 데드락(Deadlock) 이 발생될 수 있다. 이를 방지하기 위해 WITH(NOLOCK) 을 사용할 수 있다. WITH(NOLOCK) 의 격리수준(Isolation Level)은 Read Uncommitted 와 같다고 보면 된다. 즉, SELECT 할 ROW 또는 TABLE 이 잠겨있어도(작업중이여도)..

계층형쿼리란 재귀 쿼리랑도 같다. 재귀의 의미는 자기자신을 부르는 것이고, MSSQL은 그걸 CTE 테이블이라고도 부른다. [SQL] 계층형 쿼리 (ORACLE, MSSQL) #2 이전 글에서는 계층형 데이터에 대해 알아봤습니다. 동일 테이블 안에 상위, 하위 데이터가 포함된 데이터... blog.naver.com 내가 구현한 cte 는 조인에서 코드값으로 줬었는데 중복이 아닌 값으로 조인하여 잘못나와서 고유값 seq를 조인하고 sort대신 seq로 정렬순 하였다. (사실 이 방법은 뭔가 틀린거 같은데.. 원하는 결과는 이렇다.) WITH CODE_CTE ( SEQ , CODE_CD , CODE_NM , UP_CODE_CD , DEPTH , LEVEL , SORT ) AS ( SELECT A.SEQ , ..