당신이 SQL 서버 2016 이외의 다른 버전을 사용하는 경우, 당신은 문자열을 쉼표로 구분 된이 분할하는 사용자 정의 함수을 작성해야합니다. 다음과 같이
전체 대답은 :
Go
CREATE FUNCTION [dbo].StringSplit
(
@Labels varchar(8000)
)
RETURNS @RESULT TABLE(Value VARCHAR(8000))
AS
BEGIN
DECLARE @SeparatorPosition INT = CHARINDEX(',', @Labels),
@Value VARCHAR(8000), @StartPosition INT = 1
IF @SeparatorPosition = 0
BEGIN
INSERT INTO @RESULT VALUES(@Labels)
RETURN
END
SET @Labels = @Labels + ','
WHILE @SeparatorPosition > 0
BEGIN
SET @Value = SUBSTRING(@Labels , @StartPosition, @SeparatorPosition- @StartPosition)
IF(@Value <> '' )
INSERT INTO @RESULT VALUES(@Value)
SET @StartPosition = @SeparatorPosition + 1
SET @SeparatorPosition = CHARINDEX(',', @Labels , @StartPosition)
END
RETURN
END
Go
을 위의 함수를 생성 한 후, 쿼리를 수행하면 작업이 완수해야
select concat(fn.Value,'(',count(fn.Value),')') as TagCount
from addnew a
cross apply
STRINGSPLIT(a.Labels) as fn
group by fn.Value
order by TagCount;
Working Example
참고 : 사용하는 경우 SQL Server 2016이면 내장 함수 STRING_SPLIT()
을 사용할 수 있습니다. 더 많은 정보를 들어
SQL 서버 2016 click here
솔루션 :
select concat(fn.Value,'(',count(fn.Value),')') as TagCount
from addnew a
cross apply
STRING_SPLIT(a.Labels) as fn //use in-built function, no need to create UDF
group by fn.Value
order by TagCount;
는 희망이 도움이!
SQL Server 2016 버전을 사용하는 경우 작업이 쉬운 것처럼 보입니다. SQL Server 버전을 추가 할 수 있습니까? –