sqlserverにおいて、行を列に変換する方法は何ですか?

SQL Serverでは、行を列に変換するためにPIVOT操作を使用することができます。PIVOT操作は、ユニークな値を列名とし、行の値を新しい列に埋め込むことができます。

以下は、PIVOT操作を使用したいくつかの例です:

  1. 基本的なPIVOT操作:
SELECT *
FROM (
   SELECT column1, column2, column3
   FROM table_name
) AS SourceTable
PIVOT (
   MAX(column3) -- 选择一个聚合函数,例如SUM、COUNT、MAX等
   FOR column1 -- 列标题所在的列
   IN (value1, value2, value3) -- 列标题的唯一值列表
) AS PivotTable;
  1. 動的な列タイトルを使用したPIVOT操作:
DECLARE @columnList AS NVARCHAR(MAX);
DECLARE @pivotQuery AS NVARCHAR(MAX);

SELECT @columnList = CONCAT(@columnList, ', ', QUOTENAME(column1))
FROM (
   SELECT DISTINCT column1
   FROM table_name
) AS ColumnListTable;

SET @pivotQuery = CONCAT('
   SELECT *
   FROM (
      SELECT column1, column2, column3
      FROM table_name
   ) AS SourceTable
   PIVOT (
      MAX(column3)
      FOR column1
      IN (', @columnList, ')
   ) AS PivotTable;
');

EXECUTE sp_executesql @pivotQuery;

以上の例では、table_nameは変換する元のテーブルの名前であり、column1は列見出しを含む列の名前、column2およびcolumn3は変換する値の列の名前です。value1、value2、value3は列見出しのユニークな値のリストです。

SQLサーバーに特有のPIVOT操作は、すべてのデータベース管理システムで使用することができるわけではないことに留意する必要があります。他のデータベースを使用している場合は、行から列への変換を実現するために異なる方法を採用する必要があります。

bannerAds