我同意其他評論者認爲你應該看看你的導入流程和數據架構來存儲所有的不同事件作爲單獨的錶行。
但是,如果這是不可能的,你可以做所需的操作相對簡單,無需使用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