본문 바로가기
  • [성공하는 개발자] - Developer
728x90

SQL12

[MSSQL] UNPIVOT 함수, 열을 행으로 바꾸기 (가로를 세로로) SQL Server에서 열(칼럼)을 행으로 바꾸기 위해서는 UNPIVOT을 사용하면 된다. 가로의 칼럼을 세로의 행으로 바꾼다고 생각하면 된다. 자주 사용하지는 않지만 개념을 이해하고 있으면 한 번쯤은 필요할 때가 있다. SELECT * FROM ( 대상테이블 or 서브쿼리 ) AS tab UNPIVOT ( 집계값칼럼명 FOR UNPIVOT대상칼럼명 IN ([UNPIVOT할칼럼명] ... ) AS unpvt UNPIVOT 사용법 WITH sal_stat(job, D_10, D_20, D_30) AS ( SELECT 'ANALYST', 0, 6000, 0 UNION ALL SELECT 'CLERK', 1300, 1900, 950 UNION ALL SELECT 'MANAGER', 2450, 2975, 285.. 2023. 4. 4.
[MSSQL] IN 연산자 사용법 (NOT IN, 서브쿼리) SQL Server에서 OR 연산자를 사용하여 여러 개의 값을 비교하는 작업을 IN 연산자를 사용하면 아주 간단하게 쿼리문을 작성할 수 있다. IN 연산자에 입력된 값 중에서 하나라도 일치하는 것이 있으면 리스트에 조회된다. IN 사용법 SELECT * FROM emp WHERE ename IN ('JONES', 'SCOTT', 'MILLER') 영문성명(ename)에 'JONES', 'SCOTT', 'MILLER'가 하나라도 일치하 값이 있으면 조회된다. IN을 사용하면 쿼리가 실행될 때 내부적으로 OR 연산자로 변경되어 실행되므로 아래와 동일한 결과가 조회된다. IN 연산자는 OR 연산자와 동일하게 실행 되므로 인덱스가 있는 칼럼에 사용할 경우 인덱스를 타지 못할 수 있으니 주의해서 사용해야 한다. .. 2022. 11. 28.
[MSSQL] 중복 제거 방법 (DISTINCT) SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶다면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 사용하는 방법 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다. GROUP BY를 사용하면 속도가 조금 빠르다는 얘기가 있으나 큰 차이를 느끼지 못했다. GROUP BY를 사용해야 할 특별한 경우가 아니면 중복 행을 제거할 때는 DISTINCT를 사용할 것을 권장한다. DISTINCT를 사용해도 중복을 제거한 결과가 오름차순으로 정렬되어서 조회된다. (SQL Server 2019) ■ DISTINCT를 사용하여 중복 제거 SELECT DISTINCT deptno, job FROM emp WHERE deptno in (20, 30) 중복 행이 제.. 2022. 10. 28.
[MSSQL] 문자열 합치기 (CONCAT, +) SQL Server에서 문자열을 합칠 때는 CONCAT 함수와 더하기(+) 연산자를 사용한다. 문자열을 합칠 때는 되도록이면 CONCAT 함수를 사용할 것을 권장하지만, 더하기 연산자를 사용하는 것이 더 익숙하기 때문에 더 많이 사용하는 듯하다. 더하기 연산자를 사용할 때는 주의사항이 있으니 아래를 참고하기 바란다. ■ CONCAT 함수 사용하여 문자열 합치기 SELECT CONCAT('SQL', 'Server', '2019') AS str1 , CONCAT(2021, 12, 31, 23, 59, 59) AS str2 CONCAT 함수는 많은 데이터베이스에서 사용 가능한 ANSI SQL 함수이며, CONCAT 함수에 입력된 값은 문자형으로 변환 후 합치는 작업이 이뤄진다. 숫자와 문자가 함께 입력되어도 .. 2022. 7. 28.
[MSSQL] 문자열 자르기 (SUBSTRING, LEFT, RIGHT) SQL Server에서 문자열을 자르기 위해서는 SUBSTRING, LEFT, RIGHT 세 가지 함수를 사용할 수 있다. 오라클에서는 SUBSTR 함수 하나로 위의 세 가지 함수 기능을 모두 할 수 있지만, SQL Server에서는 위의 세 가지 함수를 적절히 잘 사용해야 한다. SUBSTRING("문자열", "시작위치", "길이") : 지정한 위치에서 지정한 문자열 길이만큼 자를 때 사용 LEFT("문자열", "길이") : 왼쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 RIGHT("문자열", "길이") : 오른쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 기본 사용법 ■ SUBSTRING 함수 SELECT SUBSTRING('SQL Server 2019', 1, 3) AS str1 , SUB.. 2022. 7. 25.
[MSSQL] CASE WHEN 표현식 사용법 (DECODE, IF) SQL Server에서는 조건에 따라 서로 다른 값을 반환할 수 있는 CASE 표현식을 사용할 수 있다. 프로그래밍 언어에서 if 문과 비슷하다고 생각하면 된다. 오라클의 DECODE 함수와 비슷한 기능을 하며, CASE 표현식은 ANSI SQL 이므로 대부분의 데이터베이스에서 동일하게 사용할 수 있다. CASE 표현식은 if 문 방식과 swith 문 방식으로 사용할 수 있다. 주로 if 문과 유사한 방식으로 많이 사용하지만 상황에 따라서 swith 문 방식으로 사용하면 쿼리문을 단순화시킬 수도 있을 듯하다. 기본 사용법 ■ if 문 방식 ELECT employee_id , first_name , job_id , CASE WHEN job_id = 13 THEN 'CLERK' WHEN job_id = 14.. 2022. 7. 25.
728x90