공통 컬럼을 기준으로 테이블 SQL 조인 동적 생성

발행: (2026년 6월 9일 AM 12:17 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

소개

이 블로그 포스트에서는 SQL Server를 사용해 공통 컬럼을 기준으로 여러 테이블을 연결하는 JOIN 절을 동적으로 생성하는 방법을 살펴봅니다. customer_id와 같은 컬럼을 포함하고 있는 테이블들 사이에 JOIN을 자동으로 만들기 위해 동적 SQL을 활용함으로써, 각각의 JOIN을 일일이 작성해야 하는 번거로움을 줄일 수 있습니다.

단계별 가이드

SELECT 
orders (with customer_id)

단계 1 예시 출력

-- 컬럼 메타데이터를 저장할 임시 테이블 생성
CREATE TABLE #CustomerIDColumns (

단계 2: 데이터 삽입 및 별칭을 위한 행 번호 계산

(코드 생략)

단계 3: JOIN의 기준이 될 기본 테이블 선택

DECLARE @baseTable NVARCHAR(255);
-- 첫 번째 테이블을 기준 테이블로 선택

단계 4: JOIN 절을 동적으로 구성

DECLARE @joinPart NVARCHAR(MAX) = '';
-- 미리 계산된 행 번호를 이용해 별칭을 지정하면서 JOIN 부분을 동적으로 생성

단계 4 예시 출력

LEFT JOIN dbo.orders AS T1 ON T0.[customer_id] = T1.[customer_id]
DECLARE @sql NVARCHAR(MAX) = '';
-- 전체 SQL 쿼리 구성
@sql = 'SELECT * FROM ' + @baseTable + ' AS T0' + CHAR(13) + CHAR(10) + @joinPart;
-- 디버깅을 위해 생성된 SQL을 출력
@sql;

단계 5 예시 출력

SELECT * 
-- 동적 SQL 쿼리 실행
@sql;

핵심 정리

  • 반복 작업 자동화: 여러 JOIN 절을 수동으로 작성하는 대신 프로그램matically 생성할 수 있습니다.

실용적인 적용 사례

(내용 생략)

결론

이 방법은 효율적일 뿐만 아니라 확장성도 뛰어나, 대규모 데이터베이스를 관리하거나 복잡한 JOIN을 자주 수행해야 하는 개발자와 데이터베이스 관리자에게 훌륭한 솔루션이 됩니다.

전체 쿼리: 6단계 모두 결합

-- %customer_id%와 같은 컬럼을 가진 모든 테이블 조회
-- 단계 1: 'customer_id' 컬럼이 있는 테이블 정보 조회
-- 단계 2: 메타데이터를 저장할 임시 테이블 생성
-- 단계 3: 임시 테이블에 데이터 삽입 및 행 번호 할당
-- 단계 4: JOIN의 기준 테이블 선택
-- 단계 5: JOIN 절을 동적으로 생성
-- 단계 6: 전체 SQL 쿼리 구성 및 실행
@sql NVARCHAR(MAX) = '';
-- 기준 테이블과 JOIN 절을 포함한 전체 쿼리 구성
@sql = 'SELECT * FROM ' + @baseTable + ' AS T0' + CHAR(13) + CHAR(10) + @joinPart;
-- 디버깅을 위해 생성된 SQL을 출력 (선택 사항)
@sql;
-- 동적으로 생성된 SQL 쿼리 실행
@sql;
customers
SELECT * 

결론

이 방법은 특히 다음과 같은 상황에서 유용합니다:

  • 보고서 작성: 여러 테이블을 자동으로 조인해 포괄적인 보고서를 생성.
  • 데이터 분석: 고객, 주문, 결제 데이터를 동적으로 조인해 관계와 추세를 분석.
  • 자동 쿼리 생성: 사용자 입력이나 데이터베이스 구조에 따라 SQL 쿼리를 동적으로 생성해야 하는 애플리케이션.

이 포스트의 단계들을 따라 하면, 데이터베이스 구조에 맞춰 하드코딩 없이 유연하고 확장 가능한 쿼리를 만들 수 있습니다. 동적 SQL의 간편함과 강력함을 경험해 보세요!

0 조회
Back to Blog

관련 글

더 보기 »