Column1
--------
1,2,4
2,3,5
2,1,3
위와 같이 쉼표로 구분 된 테이블에 열이 있습니다. 출력 아래에 있어야합니다.
No Count
----------
1 2
2 3
3 2
4 1
내가 시도했을 때
SELECT SUM(LEN(Holidays) - LEN(REPLACE(Holidays, ',', '')) + 1)
FROM [dbo].[OhLog]
항목 현명한 계산을 얻지 못합니다. 대신 전체 카운트를 얻고 있습니다.
CROSS_APPLY
with STRING_SPLIT
를 사용하여 쉼표로 구분 된 데이터 값에서 행을 만든 다음 COUNT
각 값의 발생 을 만들 수 있습니다 .
SELECT value as [Holiday], COUNT(*) AS [Count]
FROM OhLog
CROSS APPLY STRING_SPLIT([Holidays], ',')
GROUP BY value
산출:
Holiday Count
1 2
2 3
3 2
4 1
5 1
데이터베이스 호환성 버전이 130 이상이면에 액세스 할 수 없습니다 STRING_SPLIT
. 설명서에 설명 된대로 호환성 버전을 수정하거나이 쿼리를 사용할 수 있습니다 ( 이 답변을 기반으로 함 ).
SELECT [Holiday], COUNT(*) AS [Count]
FROM (SELECT Split.a.value('.', 'NVARCHAR(MAX)') [Holiday]
FROM (SELECT CAST('<X>'+REPLACE([Holidays], ',', '</X><X>')+'</X>' AS XML) AS String
FROM Ohlog
) AS A
CROSS APPLY String.nodes('/X') AS Split(a)) AS O
GROUP BY [Holiday]
출력은 이전 쿼리와 동일합니다. dbfiddle 데모
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다