あなたはのSQL Server 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 Server 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のバージョンを追加できますか? –