동적으로 컬럼을 추가하는 경우는 거의 없지만, 가끔은 필요할 때가 있다.

하여 테스트를 하였다.

 

결과 : 일반테이블이나 임시테이블은 가능하다 하지만, 테이블 변수는 ALTER TABLE 문이 실행되지 않아 못함.

 

 

임시테이블의 동적 컬럼 추가는 하기와 같다.

 

IF OBJECT_ID('tempdb..#RESULT_TABLE', 'U') IS NOT NULL
    DROP TABLE #RESULT_TABLE;
    
DECLARE
    @ColumnName01 VARCHAR(50)
  , @ColumnName02 VARCHAR(50)
  , @ColumnName03 VARCHAR(50)
  , @ColumnName04 VARCHAR(50);
 
SELECT
    @ColumnName01 = '[Sales Person]'
  , @ColumnName02 = '[' + DATENAME(MONTH, GETDATE()) + ' Sales]'
  , @ColumnName03 = '[' + DATENAME(MONTH, DATEADD(MONTH, -1, GETDATE())) + ' Sales]'
  , @ColumnName04 = '[' + DATENAME(MONTH, DATEADD(MONTH, -2, GETDATE())) + ' Sales]';
 
 
CREATE TABLE #RESULT_TABLE ( TempColumn INT );
 
DECLARE @SQL NVARCHAR(200);
 
SET @SQL = 'ALTER TABLE #RESULT_TABLE ADD ';
SET @SQL += @ColumnName01 + ' VARCHAR(50) NULL, ';
SET @SQL += @ColumnName02 + ' MONEY NULL, ';
SET @SQL += @ColumnName03 + ' MONEY NULL, ';
SET @SQL += @ColumnName04 + ' MONEY NULL ';
 
EXEC sys.sp_executesql @SQL;
 
 
INSERT  INTO #RESULT_TABLE
VALUES
        ( 'Eric', '120.01', '200.32', '345.00' )
 ,      ( 'Ralph', '132.03', '33.3', '341.13' ),
        ( 'David', '987.3', '30.77', '879.00' );
 
SELECT * FROM #RESULT_TABLE;
 
IF OBJECT_ID('tempdb..#RESULT_TABLE', 'U') IS NOT NULL
    DROP TABLE #RESULT_TABLE;

'IT > MSSQL' 카테고리의 다른 글

FROM TO 기간안에 특정 요일별 날짜 추출  (0) 2018.03.07
mssql 날짜 포맷 모음  (0) 2018.02.28
MSSQL 반올림, 자르기(절삭), 올림, 내림  (0) 2018.02.19
십단위 올림  (0) 2018.02.19
로우 합치기  (0) 2018.02.02

+ Recent posts

동적으로 컬럼을 추가하는 경우는 거의 없지만, 가끔은 필요할 때가 있다.

하여 테스트를 하였다.

 

결과 : 일반테이블이나 임시테이블은 가능하다 하지만, 테이블 변수는 ALTER TABLE 문이 실행되지 않아 못함.

 

 

임시테이블의 동적 컬럼 추가는 하기와 같다.

 

IF OBJECT_ID('tempdb..#RESULT_TABLE', 'U') IS NOT NULL
    DROP TABLE #RESULT_TABLE;
    
DECLARE
    @ColumnName01 VARCHAR(50)
  , @ColumnName02 VARCHAR(50)
  , @ColumnName03 VARCHAR(50)
  , @ColumnName04 VARCHAR(50);
 
SELECT
    @ColumnName01 = '[Sales Person]'
  , @ColumnName02 = '[' + DATENAME(MONTH, GETDATE()) + ' Sales]'
  , @ColumnName03 = '[' + DATENAME(MONTH, DATEADD(MONTH, -1, GETDATE())) + ' Sales]'
  , @ColumnName04 = '[' + DATENAME(MONTH, DATEADD(MONTH, -2, GETDATE())) + ' Sales]';
 
 
CREATE TABLE #RESULT_TABLE ( TempColumn INT );
 
DECLARE @SQL NVARCHAR(200);
 
SET @SQL = 'ALTER TABLE #RESULT_TABLE ADD ';
SET @SQL += @ColumnName01 + ' VARCHAR(50) NULL, ';
SET @SQL += @ColumnName02 + ' MONEY NULL, ';
SET @SQL += @ColumnName03 + ' MONEY NULL, ';
SET @SQL += @ColumnName04 + ' MONEY NULL ';
 
EXEC sys.sp_executesql @SQL;
 
 
INSERT  INTO #RESULT_TABLE
VALUES
        ( 'Eric', '120.01', '200.32', '345.00' )
 ,      ( 'Ralph', '132.03', '33.3', '341.13' ),
        ( 'David', '987.3', '30.77', '879.00' );
 
SELECT * FROM #RESULT_TABLE;
 
IF OBJECT_ID('tempdb..#RESULT_TABLE', 'U') IS NOT NULL
    DROP TABLE #RESULT_TABLE;

'IT > MSSQL' 카테고리의 다른 글

FROM TO 기간안에 특정 요일별 날짜 추출  (0) 2018.03.07
mssql 날짜 포맷 모음  (0) 2018.02.28
MSSQL 반올림, 자르기(절삭), 올림, 내림  (0) 2018.02.19
십단위 올림  (0) 2018.02.19
로우 합치기  (0) 2018.02.02

+ Recent posts