복붙노트

[SQL] 동적 SQL을 사용하면 간단한 SQL 쿼리에 변수를 추가하여 열 이름을 지정합니다

SQL

동적 SQL을 사용하면 간단한 SQL 쿼리에 변수를 추가하여 열 이름을 지정합니다

/ SQL 2008 SQL 2005

Declare @temp nvarchar(1000)

set @temp = 'ABC'


select col1,col2 from tableA

선택 쿼리와 함께, 어떻게 선택 쿼리에 변수를 추가하려면?

expected output :-

select col1,col2,@temp as [col3] from tableA

어디 @temp은 타블로의 열 이름을 지정합니다.

해결법

  1. ==============================

    1.동적 열 이름을 지정하려는 경우, 당신은 동적 SQL을 실행 한 번 봐 걸릴 수 있습니다. 그러나 먼저이 방법의 위험성에 대해 읽고 확인해야합니다 :

    동적 열 이름을 지정하려는 경우, 당신은 동적 SQL을 실행 한 번 봐 걸릴 수 있습니다. 그러나 먼저이 방법의 위험성에 대해 읽고 확인해야합니다 :

    http://www.sommarskog.se/dynamic_sql.html

    해당 페이지에서 동적으로 테이블 이름을 지정 쇼하는 샘플이 - 동적으로 열 이름을 대신 지정, 그래서 당신이 그것을 바꿀 수는 :

    CREATE PROCEDURE general_select @tblname nvarchar(128),
                                    @key     varchar(10),
                                    @debug   bit = 0 AS
    DECLARE @sql nvarchar(4000)
    SET @sql = 'SELECT col1, col2, col3
                FROM dbo.' + quotename(@tblname) + '
                WHERE keycol = @key'
    IF @debug = 1 PRINT @sql
    EXEC sp_executesql @sql, N'@key varchar(10)', @key = @key
    

    그래서 예를 들어 당신이 'X', 'Y', 그리고 'Z'라는 이름의 열이있는 테이블 '을 MyTable'이 있다면, 그것은처럼 보일 수 있습니다 :

    DECLARE @columnName nvarchar(128)
    DECLARE @sql nvarchar(4000)
    set @columnName = 'z'
    
    SET @sql = 'SELECT x, y, ' + @columnName + ' from MyTable'
    EXEC sp_executesql @sql, N'@columnName varchar(128)', @columnName = @columnName
    
  2. ==============================

    2.이 같은:

    이 같은:

    select col1,col2 from tableA WHERE col1 = @temp
    

    아니면 이거:

    select col1,col2,@temp as col3 from tableA WHERE col1 = @temp
    

    아니면 이거:

    select col1,col2,@temp as col3 from tableA
    

    @temp가 열 이름 인 경우 또는, 어쩌면 당신은 동적 쿼리를 찾고?

     SET @temp = 'select col1,col2, ' + @temp + ' as col3 from tableA'
     EXEC sp_executesql @temp
    

    ...

  3. from https://stackoverflow.com/questions/7123659/using-dynamic-sql-to-specify-a-column-name-by-adding-a-variable-to-simple-sql-qu by cc-by-sa and MIT license