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

SQL Server で行を列に転置するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-05 02:02:41
オリジナル
880 人が閲覧しました

How to Transpose Rows to Columns in SQL Server?

SQL Server での行から列への転置

表形式データを操作する場合、行を列に転置すると便利な変換になることがあります。 SQL Server では、特定の要件に応じて、このタスクを達成するためのアプローチがいくつかあります。

条件付き集計

1 つの方法は、条件付き集計を使用することです。このアプローチは、列の数が事前にわかっている場合に適しています。ネストされた CASE ステートメントを使用すると、特定の条件に基づいて各列で取得する値を指定できます。以下のクエリは、条件付き集計を示しています。

SELECT TimeSeconds,
       COALESCE(MAX(CASE WHEN TagID = 'A1' THEN Value END), 'n/a') A1,
       COALESCE(MAX(CASE WHEN TagID = 'A2' THEN Value END), 'n/a') A2,
       COALESCE(MAX(CASE WHEN TagID = 'A3' THEN Value END), 'n/a') A3,
       COALESCE(MAX(CASE WHEN TagID = 'A4' THEN Value END), 'n/a') A4
  FROM table1
 GROUP BY TimeSeconds
ログイン後にコピー

PIVOT Operator

別のオプションは、PIVOT 演算子を使用することです。この演算子を使用すると、キー値に基づいて行を列に回転できます。次のクエリは、PIVOT を使用して行を転置します。

SELECT TimeSeconds, A1, A2, A3, A4
  FROM
(
  SELECT TimeSeconds, TagID, Value
    FROM table1
) s
PIVOT
(
  MAX(Value) FOR TagID IN (A1, A2, A3, A4)
) p
ログイン後にコピー

動的 SQL

列の数が固定されていないか、動的に決定される場合は、動的 SQL を利用できます。 SQL。このアプローチには、使用可能な TagID 値に基づいて SQL クエリ文字列を構築し、それを動的に実行することが含まれます。以下のコードは例を示しています。

DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX)

SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(TagID)
            FROM Table1
            ORDER BY 1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)'),1,1,'')

SET @sql = 'SELECT TimeSeconds, ' + @cols + '
              FROM
            (
              SELECT TimeSeconds, TagID, Value
                FROM table1
            ) s
            PIVOT
            (
              MAX(Value) FOR TagID IN (' + @cols + ')
            ) p'

EXECUTE(@sql)
ログイン後にコピー

これらの手法は、SQL Server で行を列に転置するさまざまな方法を提供します。最適なアプローチは、データの性質とタスクの特定の要件によって異なります。

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

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