だから私はこのようなテーブルを持っています
表1
Quote Ref | Product A | Product B | Product C | Product D
-----------+-----------+-------------+-----------+-----------
12 | 222333 | 4748847478 | 0 | 0
Business Group
以下の Table を使用して、これがどれに属しているかを調べる必要があります。
見積もりにこれらの製品がないため、マッピングするビジネス グループがないため、ゼロに等しい製品のフィールドには興味がありません。この見積もりでは、製品 A および B 列の値がゼロ以外であり、ビジネス グループにマップできます。( キーポイント )
表 2
Product Line | Business Group
Product A | Manfacturing
Product B | Tech Net
そこでUNPIVOT
、表 1 のデータに注目します。
SELECT [QUOTE Ref], [Product Line], [Value]
FROM
(SELECT [QUOTE Ref], [Product A], [Product B], [Product C], [Product D]
FROM [Table1]) p
UNPIVOT
([Value] FOR [Product Line]
IN ([Product A], [Product B], [Product C], [Product D] )
)AS unpvt;
テーブル 1 の DATA は次のようになります
Quote Ref | Product Line | Value
-----------+--------------+------------
12 | Product A | 222333
12 | Product B | 4748847478
12 | Product C | 0
12 | Product D | 0
問題は、40,000 行が 470 万行になることです。
これで、製品ラインの値がゼロに等しい、ピボットされていないテーブルの行は必要ないことがわかりました。unpivot クエリでこれらのエントリを削除するにはどうすればよいですか、または UNPIVOT を開始する前にベース テーブルに対してできることはありますか? 私のデータベースは、データベース内の約 20 の同様のテーブルと 6,000 万行を処理するのに十分な大きさではありません。