ホームページ > データベース > mysql チュートリアル > UNPIVOT を使用して動的 SQL Server の列を行に転置する方法

UNPIVOT を使用して動的 SQL Server の列を行に転置する方法

Linda Hamilton
リリース: 2024-12-05 04:39:11
オリジナル
393 人が閲覧しました

How to Transpose Dynamic SQL Server Columns to Rows Using UNPIVOT?

UNPIVOT を使用して動的 SQL Server の列を行に転置する

SQL Server では、UNPIVOT 関数を使用して列を行に転置できます。これはよく使用される手法です。アンピボットと呼ばれます。これは、動的な列数または可変数の列を持つデータを扱う場合に特に便利です。

シナリオ例

次の表 1 について考えてみましょう。

Table1
-----------------------------------------
Id       abc  brt ccc ddq eee fff gga hxx
-----------------------------------------
12345     0    1   0   5   0   2   0   0  
21321     0    0   0   0   0   0   0   0   
33333     2    0   0   0   0   0   0   0   
41414     0    0   0   0   5   0   0   1   
55001     0    0   0   0   0   0   0   2   
60000     0    0   0   0   0   0   0   0 
77777     9    0   3   0   0   0   0   0
ログイン後にコピー

目標は、Table1 を次の Expected_Result_Table にアンピボットし、次の値より大きい値のみを考慮することです。 0:

Expected_Result_Table
---------------------
Id      Word   Qty>0
---------------------
12345    brt    1
12345    ddq    5
12345    fff    2
33333    abc    2
41414    eee    5
41414    hxx    1
55001    hxx    2
77777    abc    9
77777    ccc    3
ログイン後にコピー

UNPIVOT を使用した解決策

UNPIVOT 関数は、複数の列を持つテーブルを取得し、それを 2 つの追加列を持つより広いテーブルに変換します。 " 元のテーブルの列のデータを含む列と、ソースを識別する「名前」列

SELECT Id,
       name AS Word,
       value AS Qty>0
FROM Table1
UNPIVOT (value FOR name IN (abc, brt, ccc, ddq, eee, fff, gga, hxx)) AS unpvt
WHERE value > 0;
ログイン後にコピー

このクエリは期待される結果を生成します。

以上がUNPIVOT を使用して動的 SQL Server の列を行に転置する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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