ホームページ >データベース >mysql チュートリアル >集計関数を使用せずに T-SQL PIVOT 操作を実行する方法
集計関数を使用しない T-SQL PIVOT 操作
通常、集計関数が必要な PIVOT 操作とは異なり、PIVOT 変換は集計関数を使用せずに実行することもできます。これは、集約を行わずにデータの再構築が必要な特定のシナリオで発生する可能性があります。
次の形式を考えてみましょう:
CustomerID | DBColumnName | Data |
---|---|---|
1 | FirstName | Joe |
1 | MiddleName | S |
1 | LastName | Smith |
1 | Date | 12/12/2009 |
2 | FirstName | Sam |
2 | MiddleName | S |
2 | LastName | Freddrick |
2 | Date | 1/12/2009 |
3 | FirstName | Jaime |
3 | MiddleName | S |
3 | LastName | Carol |
3 | Date | 12/1/2009 |
目標は、このデータを次の結果にピボットすることです:
CustomerID | FirstName | MiddleName | LastName | Date |
---|---|---|---|---|
1 | Joe | S | Smith | 12/12/2009 |
2 | Sam | S | Freddrick | 1/12/2009 |
3 | Jaime | S | Carol | 12/1/2009 |
集計関数を使用せずに PIVOT を使用してこれを実現するには、次のクエリを使用できます:
<code class="language-sql">SELECT CustomerID, MIN(CASE DBColumnName WHEN 'FirstName' THEN Data END) AS FirstName, MIN(CASE DBColumnName WHEN 'MiddleName' THEN Data END) AS MiddleName, MIN(CASE DBColumnName WHEN 'LastName' THEN Data END) AS LastName, MIN(CASE DBColumnName WHEN 'Date' THEN Data END) AS Date FROM table GROUP BY CustomerId;</code>
このクエリは、PIVOT 操作で case ステートメントを実行し、指定された CustomerID の各 DBColumnName の最小値を選択します。 CustomerID と DBColumnName の組み合わせごとにデータが 1 行しかないため、MIN 関数は必要な値を返します。
以上が集計関数を使用せずに T-SQL PIVOT 操作を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。