我同意其他评论者认为你应该看看你的导入流程和数据架构来存储所有的不同事件作为单独的表行。
但是,如果这是不可能的,你可以做所需的操作相对简单,无需使用cte
S或附加功能。当心,这将不超过字Claim
以外的任何工作,因为这是所有已经在你的问题是问:
declare @Event table(Event nvarchar(500));
insert into @Event values
('Payment stopped, Claim, Claim, Claim')
,('Claim')
,('Claim, Claim, Claim')
,('Claim, Claim, Payment stopped, Case Closed')
,('Payment stopped, Case Closed');
select Event
,case (len(Event) - len(replace(Event,'Claim','')))/5
when 0 then ''
when 1 then '1 Claim' + case when len(replace(Event,'Claim','')) > 0 then ', ' else '' end
else cast((len(Event) - len(replace(Event,'Claim','')))/5 as nvarchar(5)) + ' Claims' + case when len(replace(Event,'Claim','')) > 0 then ', ' else '' end
end
+ case when len(replace(Event,'Claim','')) > 0
then replace(replace(replace(Event,', Claim',''),'Claim, ',''),'Claim','')
else ''
end as Result
from @Event;
输出:
Event | Result
````````````````````````````````````````````|````````````````````````````````````````
Payment stopped, Claim, Claim, Claim | 3 Claims, Payment stopped
Claim | 1 Claim
Claim, Claim, Claim | 3 Claims,
Claim, Claim, Payment stopped, Case Closed | 2 Claims, Payment stopped, Case Closed
Payment stopped, Case Closed | Payment stopped, Case Closed
这似乎是一个工作的前沿,而不是分贝给我。分开一个csv,重新格式化它,和s将它重新组合在一起将成为带有SQL的PITA。 – Jamiec
这是用于SSRS报告。您认为使用报告设计器中的选项可能是可行的吗? – Saranya
可能的,但有可能的是正确设计你的表,所以它不是一个问题。包含您需要操作的逗号分隔值的列不是回退报表的方式。你应该有一个事件表和一个联结表返回到你的记录。 – Jamiec