У меня есть столбец, который хранит данные, как это:Подсчитайте количество вхождений ключевого слова в столбце, разделенном запятой?
продукта:
product1, product2, product5
product5, product7
product1
То, что я хотел бы сделать, это подсчитать количество вхождений там имеют product1, product2 и т. д., но там, где запись содержит несколько продуктов, я хочу, чтобы они их удвоили.
Таким образом, для приведенного выше примера итоговые суммы будут:
product1: 2
product2: 1
product5: 2
product7: 1
Как я могу добиться этого?
select count(case when prodcolumn like '%product1%' then 'product1' end) from myTable
Это заставляет меня счетчик для product1 появляется, но как я могу продлить это пройти через каждый продукт:
я что-то вроде этого пытается?
я пытался что-то вроде этого:
select new_productvalue, count(new_productvalue) from OpportunityExtensionBase
group by new_ProductValue
Но что перечислены все различные комбинации продуктов, которые были найдены и сколько раз они были найдены ...
Эти продукты не меняются поэтому жесткое кодирование это нормально ...
EDIT: вот что сработало для меня.
WITH Product_CTE (prod) AS
(SELECT
n.q.value('.', 'varchar(50)')
FROM (SELECT cast('<r>'+replace(new_productvalue, ';', '</r><r>')+'</r>' AS xml) FROM table) AS s(XMLCol)
CROSS APPLY s.XMLCol.nodes('r') AS n(q)
WHERE n.q.value('.', 'varchar(50)') <> '')
SELECT prod, count(*) AS [Num of Opps.] FROM Product_CTE GROUP BY prod
В следующий раз избегайте значений, разделенных запятой, в столбце –
Полностью согласен с вами, но это то, что мне дано, и к сожалению :( – user2573690