实际上,我是 SQL XML 路径的初学者,因此我很专业,有一个场景......我有一个 CTE 函数,结果为
Data Chars NumberOfOccurance
12 1 1 appears (1 ) times
12 2 2 appears (1 ) times
xx x x appears (2 ) times
和 CTE 函数是:
;with cte as
(
select Data , SUBSTRING(Data,1,1) as Chars,1 as startpos from @t
union all
select Data, SUBSTRING(Data, startpos+1,1) as char,startpos+1 from cte where startpos+1<=LEN(data)
)
select Data,Chars,Cast(Chars as varchar(1)) + ' appears (' + cast(COUNT(*) as varchar(5))+ ' ) times' as 'NumberOfOccurance' from cte
group by data, chars
其实我只是想把我的答案变成这个:
data Number_of_occurances
12 1 appears (1) times 2 appears (1) times
xx x appears (2) times
我试过这个:
; With Ctea as
(
select Data , SUBSTRING(Data,1,1) as Chars,1 as startpos from @t
union all
select Data, SUBSTRING(Data, startpos+1,1) as char,startpos+1 from ctea where startpos+1<=LEN(data)
)
select Data,Chars,REPLACE((SELECT (Cast(Chars as varchar(1)) + ' appears (' + cast(COUNT(*) as varchar(5))+ ' ) times') AS [data()] FROM Ctea t2 WHERE t2.Data = t1.data FOR XML PATH('')), ' ', ' ;') As Number_of_occurances from ctea as t1
group by t1.data, t1.Chars
它说 :
Column 'Ctea.Chars' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
当我使用临时表并得到我的确切答案时,但不能做到 CTE
任何人都可以得出我的结果吗?