기본카테고리

[MsSql] 테이블의 필드값을 행에서 열로 표시한다.(PIVOT 함수 사용)

DBRef 2016. 7. 1. 10:18




728x90

  /// <summary>
  /// 테이블의 필드값을 행에서 열로 표시한다.(PIVOT 함수 사용)
  /// </summary>
  /// <param name="tblname">테이블명(예제: TBP_ResultTailInfo)</param>
  /// <param name="dispfields">표시할 필드명들(구분자=콤마, 예제: [DONG],[FLOOR],[MOF],[SYMBOL],[SPEC],[QTY])</param>
  /// <param name="where">검색에 적용할 조건문(예제: where 절) </param>
  /// <param name="valuefield">keyfield 가 가지는 값의 필드명(예제: sum() 함수가 적용되는 QTY)</param>
  /// <param name="keyfield">필드의 값을 필드명으로 표시할 필드명(예제: pivot 문의 [SPEC])</param>
  /// <param name="keyvalues">필드의 값들(구분자=콤마, 예제: pivot 문의 in 구문의 괄호안에 있는 값들)</param>
  /// <param name="order">정렬방법(예제: order by 구문)</param>
  /// <returns>검색된 최종결과값들의 목록</returns>
  /// <remarks>
  /// [예제]
  ///  select *
  ///  from (
  ///   select [DONG],[FLOOR],[MOF],[SYMBOL],[SPEC],[QTY]
  ///   from dbo.TBP_ResultTailInfo
  ///   where 1=1
  ///    and PRJ_ID='A1606001'
  ///    and ID like 'C01%'
  ///    and [SPEC] is not null
  ///    and [GUBUN]='자원'
  ///  ) t
  ///  pivot (sum([QTY]) for [SPEC] in (
  ///   "25-180-12"
  ///   ,"25-210-15"
  ///   ,"갱폼"
  ///   ,"알폼/SLAB"
  ///   ,"알폼/WALL"
  ///   ,"유로"
  ///   ,"합판3회"
  ///   ,"D10"
  ///   ,"D13"
  ///   ,"D16"
  ///   ,"H10"
  ///   ,"H13"
  ///   ,"H16"
  ///   )
  ///  ) p
  ///  order by [DONG],[FLOOR],[MOF],[SYMBOL];
  /// </remarks>