ホームページ >データベース >mysql チュートリアル >UNPIVOT を使用して動的 SQL Server の列を行に転置する方法
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 サイトの他の関連記事を参照してください。