noob
602
2019-04-08 17:53:03
3
403

[MSSQL] 컬럼 헤더이름을 동적(?)으로 바꿀수 있나요??



DECLARE @Year int
SET @Year = 2018

select count(*) from TABLE where Date = DATEPART(YEAR, Date) = @Year) as @Year'년 총 횟수'

이런식으로 컬럼 헤더를 동적(?)으로 지정하는 방법이 있나요??


0
0
  • 답변 3

  • pannet15
    2k
    2019-04-08 19:06:44

    JAVA에서 List 에 배열 값을 생성하고 XML에서 Loop 를 돌려도 되고

    Temp 테이블을 생성해서 Temp 테이블의 값을 조회해서 

    동적으로 생성할수도 있습니다. 

    아니면 프로시저를 이용해서 생성해도 되구요.. 

    0
  • 르매
    560
    2019-04-08 20:17:10 작성 2019-04-08 20:17:56 수정됨

    컬럼 이름이 변수와 같은 것들에 의존적인.. 동적인 이름이 되려면, 쿼리 자체가 동적이어야 합니다.

    DECLARE @Year date;
    DECLARE @stmt nvarchar(max);
    
    SET @Year = '2018-01-01';
    SET @stmt = N'SELECT COUNT(*) AS [' + CAST(YEAR(@Year) AS nvarchar(max)) + N'년 총 횟수]
    FROM [TABLE]
    WHERE [Date] >= @Year
    	AND [DATE] < DATEADD(YEAR, 1, @Year)';
    
    EXEC dbo.sp_executesql @stmt, N'@Year date', @Year = @Year;


    p.s

    본문에서 @Year에 연도만 넣은 후 DATEPART(YEAR, Date) = @Year 로 WHERE 절을 작성하셨는데, 컬럼을 함수로 감싸서 비교하는 것은 최대한 지양해야하기 때문에 위와 같은 형태로 바꾸었습니다.

    0
  • noob
    602
    2019-04-08 23:21:01

    답변 감사합니다

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.