Итак, у меня есть такая таблица
Таблица 1
Quote Ref | Product A | Product B | Product C | Product D
-----------+-----------+-------------+-----------+-----------
12 | 222333 | 4748847478 | 0 | 0
Мне нужно выяснить, к какому Business Group
принадлежит это, используя приведенную ниже таблицу.
Меня не интересуют поля для продуктов, которые равны нулю, поскольку в предложении нет этих продуктов, поэтому нет бизнес-группы для сопоставления. Для этого предложения столбцы Product 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 тысяч строк СЕЙЧАС становятся 4,7 миллионами строк.
Теперь я знаю, что мне не нужны строки в несводной таблице, где значение линейки продуктов равно нулю. Как я могу удалить эти записи в запросе unpivot или что-то, что я могу сделать с базовой таблицей, прежде чем я даже запущу UNPIVOT? Моя база данных недостаточно велика, чтобы справиться с примерно 20 подобными таблицами и 60 дополнительными миллионами строк в базе данных.