Поскольку нет предположений типа, я выбрал бы безопасный метод с UNPIVOT:
SELECT * INTO #t FROM (VALUES
('','','Car Kit','Scented Tabs'),
('','','',''),
('','','',''),
('','Fiters','',''),
(null,null,null,null),
('','','',''),
('','Car Kit','Scented Tabs',''),
('','','',''),
('','','','')
) T(upsell1,upsell2,upsell3,upsell4)
SELECT Product, COUNT(Product) [Product Count] FROM
(
SELECT
CAST(upsell1 AS nvarchar(MAX)) upsell1,
CAST(upsell2 AS nvarchar(MAX)) upsell2,
CAST(upsell3 AS nvarchar(MAX)) upsell3,
CAST(upsell4 AS nvarchar(MAX)) upsell4
FROM #t
) T
UNPIVOT (Product for X IN (upsell1,upsell2,upsell3,upsell4)) P
WHERE Product != ''
GROUP BY Product
Результат
Product Product Count
--------------- -------------
Car Kit 2
Fiters 1
Scented Tabs 2