프로그래밍/MSSQL (76) 썸네일형 리스트형 [MSSQL] REPLICATE (오라클 LPAD) : 000부터 1씩 증가하는 3자리 숫자 001, 002, 003... 숫자 앞을 0으로 채워서 3자리의 숫자를 표현해보자 3자리의 숫자 ('001, 0002, 003..')를 표현하기 위해 활용할 함수 REPLICATE에 대해 알아보자 REPLICATE 함수는 문자를 지정된 횟수만큼 반복하여 표현해주는 함수다. REPLICATE('0', 2)는 '0'을 2번 표현 -> '00' REPLCATE('A', 3)는 'A'를 3번 표현 -> 'AAA' 자 그럼 2라는 숫자 앞에 0을 2개 채워서 '002'를 표현해보자 DECLARE @cnt INT = 2 SELECT REPLICATE('0', 3-LEN(@cnt)) + CAST(@cnt AS CHAR) -- 결과 : 002 본격적으로 001부터 999까지 1씩 증가하는 3자리 숫자를 만들어보자. 반복문(WHILE)을 이용하도록 .. [MSSQL] GROUP BY 없이 HAVING이 단독으로 오는 경우 GROUP BY 없이 단독 HAVING이 오는 경우 GROUP BY와 HAVING은 짝꿍이다? HAVING이 주로 GROUP BY절 뒤에 오는 것은 맞지만, 그렇지 않은 경우도 반드시 존재한다. 테이블 전체가 한개의 그룹이 되는 경우가 그렇다. 예를 들면 아래와 같은 경우가 GROUP BY 없이 단독 HAVING이 존재하는 경우다. SELECT COUNT(*) FROM 테이블 HAVING COUNT(*) > 1 예제 다음과 같은 데이터가 있다. 아이템의 CNT값들 중 MAX 값이 100이 넘을 경우에만 CNT의 총 합을 반환하고, 아닐 경우 값이 반환하지 않도록 하고싶다. 쿼리문을 작성해보자 SELECT SUM(CNT) AS result FROM sql_test_a; HAVING MAX(CNT) > 10.. [MSSQL] 문자열에서 특정 문자 개수 조회 문자열에서 특정 문자의 개수를 조회 ('MSSQL' 문자열에서 'S' 문자는 몇개가 존재 하는가? -> 2개) SELECT LEN(문자열)-LEN(REPLACE(문자열,찾고자하는문자,'')) 문자열 전체 길이에서 찾고자하는 문자를 제외한 나머지 문자의 길이를 빼준다. 예제 SELECT LEN('MSSQL')-LEN(REPLACE('MSSQL','S','')) -- 결과:2 LEN('MSSQL') -> 5 LEN(REPLICATE('MSSQL','S','')) -> 3 : MSSQL에서 S를 공백으로 치환하면 MQL이 남고 그 길이는 3이 된다. [MSSQL] REPLICATE (오라클 LPAD) : 000부터 1씩 증가하는 3자리 숫자 001, 002, 003... [MSSQL] 동적 PIVOT, 동적 UNPIVOT (dynamic pivot/unpivot) [MSSQL] PIVOT, UNPIVOT (행렬 변환) PIVOT / UNPIVOT PIVOT 과 UNPIVOT -- PIVOT SELECT 컬럼명 FROM 테이블명 PIVOT([집계 함수]([집계 컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명 -- UNPIVOT SELECT 컬럼명 FROM 테이블명 UNPIVOT([집계될 데이터의 컬럼명] FOR [UNPIVOT할 컬럼 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피벗테이블명 일반적으로 PIVOT과 UNPIVOT의 대상 컬럼과 컬럼이 될 값을 지정해줘야 한다. 그런데 만약 컬럼명이나 행의 값들이 동적이라면? 이를 고려하여 동적 PIVOT / UNPIVOT 쿼리를 작성해보자 동적 PIVOT DECLARE.. [MSSQL] TOP / TOP WITH TIES (상위 N개의 데이터 출력) TOP TOP은 상위 N개의 데이터를 출력한다 SELECT TOP 1 item, cnt FROM sql_test_a ORDER BY item DESC, cnt DESC 이렇게 TOP 1은 상위 데이터 1개만 출력된다. TOP WITH TIES TOP 과 동일하게 상위 N개의 데이터를 조회한다. 하지만 동일한 데이터가 있을 경우 함께 출력된다. TOP WITH TIES를 사용하기 위해서는 ORDER BY 절이 반드시 함께 와야 한다. (TOP의 경우 없어도 가능) 동일한 데이터는 ORDER BY절 뒤의 오는 컬럼이 기준이 된다. SELECT TOP 1 WITH TIES item, cnt FROM sql_test_a ORDER BY item DESC, cnt DESC 위의 TOP 예제에서와 다르게 데이터가 .. 이전 1 ··· 7 8 9 10 11 12 13 ··· 16 다음