我在表格中有一個用逗號分隔的單詞的列。我需要計算每個單詞的每次出現
我的列看起來像:('a,b,c'),('a,b,d'),('b,c,d'),('a'), ('a, c'); (小提琴在底部)
這是我得到的:
MyCol Count
-----------------
a 1
a, b, c 3
a, b, d 3
a, c 2
b, c, d 3
但這是我所期望的
MyCol Count
-------------
a 4
b 3
c 3
d 2
這是我到目前為止所做的:
select MyCol, COUNT(*)
from Test
cross apply string_split(MyCol, ',')
group by MyCol
小提琴:http ://sqlfiddle.com/#!18/4e52e/3
請注意單詞之間用逗號和空格隔開
uj5u.com熱心網友回復:
您使用了錯誤的列。只需使用[value]列(從STRING_SPLIT()呼叫回傳)并洗掉空格字符(TRIM()用于 SQL Server 2017 或LTRIM()更早RTRIM()版本):
SELECT TRIM(s.[value]) AS [value], COUNT(*) AS [count]
FROM Test t
CROSS APPLY STRING_SPLIT(t.MyCol, ',') s
GROUP BY TRIM(s.[value])
ORDER BY TRIM(s.[value])
uj5u.com熱心網友回復:
select value,count(*)cntt
from Test
cross apply string_split(MyCol,',')
group by value
order by value;
uj5u.com熱心網友回復:
通過使用洗掉空格REPLACE ,然后使用Subquery
select MyCol,count(MyCol) as Count from(
select
REPLACE (value, ' ', '' ) as MyCol
--TRIM(value) as MyCol -- both TRIM and REPLACE are equivalent
----comment one of them
from test
cross apply string_split(MyCol, ',')) b
group by MyCol
小提琴
uj5u.com熱心網友回復:
簡單地 :
select MyCol, 1 LEN(MyCol) - LEN(REPLACE(MyCol, ',', '')) AS NUM
from Test
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479239.html
