ホームページ > データベース > mysql チュートリアル > SQL Server で列を行に効率的に変換するにはどうすればよいですか?

SQL Server で列を行に効率的に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-21 19:11:07
オリジナル
652 人が閲覧しました

How Can I Efficiently Convert Columns to Rows in SQL Server?

SQL Server での列変換の詳細ガイド

多数のメトリック列を含むテーブルを操作する場合、これらの列を行に変換すると、分析やレポート作成に非常に役立ちます。この変換には、データを再構築して、異なるスキーマを持つ新しいテーブルを作成することが含まれます。

問題の説明

次のテーブル スキーマを考えてみましょう:

<code>[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]</code>
ログイン後にコピー

目標は、これらのメトリック列を行に変換し、次のスキーマを持つ新しいテーブルを作成することです:

<code>[ID] [EntityId] [IndicatorName] [IndicatorValue]</code>
ログイン後にコピー

UNPIVOT を使用したソリューション

このタスクを達成するための洗練されたソリューションは、UNPIVOT 関数を利用することです。 UNPIVOT の構文は次のとおりです:

<code>UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))</code>
ログイン後にコピー

この例では、アンピボット列はインジケーター値 (たとえば、「Indicator1」、「Indicator2」など) を表し、ピボット列は列名自体を表します。次のクエリは、UNPIVOT の使用方法を示しています:

<code>select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;</code>
ログイン後にコピー

このクエリを実行すると、メトリクス列が行に変換され、メトリクスの名前と値が新しい列に入力されます。

代替案

UNPIVOT 以外にも、列を行に変換する方法は他にもあります。

  • UNION ALL を使用した CROSS APPLY: この方法では、CROSS APPLY と UNION ALL を使用して各メトリクスの名前と値を明示的に指定します。
  • CROSS APPLY USING VALUES: 上記の方法と似ていますが、CROSS APPLY で VALUES 句を使用します。
  • 動的 SQL: インジケーター列が多数ある状況では、動的 SQL を使用してクエリ ステートメントを自動的に生成できます。

ソリューションの選択は、特定のニーズと使用する SQL Server のバージョンによって異なります。

以上がSQL Server で列を行に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート