所以我有一张这样的桌子
表格1
Quote Ref | Product A | Product B | Product C | Product D
-----------+-----------+-------------+-----------+-----------
12 | 222333 | 4748847478 | 0 | 0
我需要使用下表找出它Business Group
属于哪个。
我对等于零的产品字段不感兴趣,因为报价中没有这些产品,因此没有要映射的业务组。对于此报价,产品 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 的数据现在像这样
Quote Ref | Product Line | Value
-----------+--------------+------------
12 | Product A | 222333
12 | Product B | 4748847478
12 | Product C | 0
12 | Product D | 0
问题是 40 k 行现在变成了 470 万行。
现在我知道我不需要未透视表中 Product Line 的值等于零的行。如何在 unpivot 查询中删除这些条目,或者在启动 UNPIVOT 之前我可以对基表做些什么?我的数据库足够大,可以处理数据库中大约 20 个类似的表和 60 额外的百万行。