我有存儲這樣的數據的列:計算逗號分隔列中關鍵字的出現次數?
產品:
產品1,產品2,產品5
產品5,產品7
產品1
我想什麼做的是計算出現的次數有是產品1,產品2等,但記錄包含多個產品時,我希望它對它們進行雙重計數。
因此,對於上面的例子中的總數將是:
產品1:2
產品2:1
產品5:2
產品7:1
我怎樣才能做到這一點?
我是想這樣的事情:
select count(case when prodcolumn like '%product1%' then 'product1' end) from myTable
這讓我計數的產品1出現,但我怎麼延長這個要經過每一個產品?
我也嘗試過這樣的事情:
select new_productvalue, count(new_productvalue) from OpportunityExtensionBase
group by new_ProductValue
但是,列出了被發現和他們有多少次發現產品的所有不同的組合...
這些產品不改變所以硬編碼沒問題...
編輯:這是什麼爲我工作。
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