2016-09-21 2 views
0

좋습니다. 기본적으로 한 줄에 각 숫자가 몇 개인 지 파악해야합니다. 따라서 예 :SQL에서 값 유형의 수를 계산하십시오.

3 2 9 4 3 3 4 3 4 3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 4 3 3 4 13 13 4 3 3 13 3 13 13 13 13 13 13 13 13 13 9 4 4 4 4 3 5 3 9 10 3 4 8 10 4 3 4 13 13 13 13 4 2 5 5 13 13 13 13 13 4 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 9 13 

숫자는 모두 한 줄에 표시됩니다. 나는이 줄에 얼마나 많은 2, 3, 4 등이 있는지 세고 싶다. 이 일을 어떻게 하죠?

함수는 SQL을 사용합니다. 특히 Klipfolio 서비스를 사용하고 있습니다.

+0

당신은 while 루프에서 CHARINDEX을 시도 할 수 – Missy

답변

0

기본적인 아이디어는 쉼표로 구분 된 문자열을 분리하고 분할 결과 (테이블)에서 행을 계산/집계하는 것입니다. 더 효율적인 문자열 분리 방법은 T-SQL split string을 참조하십시오.

예 :

DECLARE @String varchar(100) = '3 2 9 4 3 3 4 3 4 3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 4 3 3 4 13 13 4 3 3 13 3 13' 
-- To change ',' to any other delimeter, just change ',' to your desired one 
DECLARE @Delimiter CHAR = ' '  

SELECT Num, Count(Num) ct 
FROM (
    SELECT LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) 'Num' 
    FROM 
    (  
     SELECT CAST ('<M>' + REPLACE(@String, @Delimiter, '</M><M>') + '</M>' AS XML) AS Data    
    ) AS A 
    CROSS APPLY Data.nodes ('/M') AS Split(a) 
) A GROUP BY Num 

는 생산 :

Num ct 
--- --- 
13 4 
    2 2 
    3 29 
    4 8 
    9 1 
관련 문제