Я извлекаю отчет из базы данных, в которой все эквиваленты формы хранятся в одном строковом столбце. Форма имеет одинаковые заголовки разделов каждый раз. Я преобразовал эти заголовки столбцов в "|"и затем хотел бы использовать это как разделитель, чтобы поместить соответствующие ответы в отдельных столбцах. Я выполнил сводку, но затем весь результат повторяется в каждом столбце, а не анализируется правильно. Пример текста столбца с возможными заголовками столбцов, выделенными полужирным шрифтом **.
Мне кажется, что мне нужно изменить инструкцию раздела и включить случай, когда, а затем изменить '|'1, 2, 3 и т. д.
Первоначальный охват работника общественного здравоохранения XYZ - женщина 48 лет, с которой связались 99/99/19. Причина охвата: Этот автор звонил из-за XYZ Источник направления: CCM NCM Первоначальный контакт / статус: Согласился на регистрацию Было ли 7-дневное последующее наблюдение с запланированным PCP: НЕТ Вам нужна помощь с доставкой в офис PCP: Нет Выявленные проблемы или проблемы:
WITH C AS(
SELECT DISTINCT hnt.note_id, hnt.line, replace(replace(replace(replace(replace(replace(replace(replace
(note_text, 'CHW Initial Contact/Status:', 'Initial Status'),'Community Health Worker Initial Outreach', '|'), 'Reason for Outreach:', '|')
, 'Referral Source:', '|'), 'Initial Contact/Status:', '|'), 'Was 7 day follow-up with PCP scheduled:','|'),'Do you need assistance with transportation to the PCP office:','|'),
'Identified Issues or Concerns:','|') as field , row_number () over (partition by hnt.note_id order by hnt.contact_date desc) rn
From hno_note_text hnt
inner join note_smartphrase_ids nsi on hnt.NOTE_CSN_ID = nsi.NOTE_CSN_ID
CROSS APPLY string_split(replace(replace(replace(replace(replace(replace(replace(replace
(note_text, 'CHW Initial Contact/Status:', 'Initial Status'),'Community Health Worker Initial Outreach', '|'), 'Reason for Outreach:', '|')
, 'Referral Source:', '|'), 'Initial Contact/Status:', '|'), 'Was 7 day follow-up with PCP scheduled:','|'),'Do you need assistance with transportation to the PCP office:','|'),
'Identified Issues or Concerns:','|') , '|') as separated
where smartphrases_id = '151325' and hnt.line = '1'
)
SELECT note_id,
[1] AS Initial_Outreach
,[2] AS Reason
,[3] AS RefSource
,[4] AS Contact_Status
,[5] AS SevenDay
,[6] AS Transportation
,[7] AS Issues
FROM C
PIVOT(
MAX(field)
FOR RN IN([1],[2],[3],[4],[5],[6],[7])
) as PVT
- На основании предложенных изменений, измененный код для(Понятия не имею, почему последняя часть исправленного кода не отображается!):
DECLARE @mockupTable TABLE(ID varchar(254), YourString VARCHAR(MAX));
INSERT INTO @mockupTable
select distinct hnt.note_id, note_text
From hno_note_text hnt
inner join note_smartphrase_ids nsi on hnt.NOTE_CSN_ID = nsi.NOTE_CSN_ID
where smartphrases_id = '151325' and hnt.line = '1'
SELECT *
FROM @mockupTable t
CROSS APPLY(SELECT CONCAT('{'
,REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(t.YourString
,'Community Health Worker Initial Outreach','"Initial_Outreach":"')
,'Reason for Outreach:','","Reason":"')
,'Referral Source:','","RefSource":"')
,'Was 7 day follow-up with PCP scheduled:','","SevenDay":"')
,'Do you need assistance with transportation to the PCP office:','","Transportation":"')
,' Identified Issues or Concerns:','","Issues":"'), 'ACO PRAPARE Screening Questionnaire','","PRAPARE":"'),
'Next Steps:','","Next Step":"')
,'"}')) A(CastedToJSON)
CROSS APPLY OPENJSON(A.CastedToJSON)
WITH(Initial_Outreach VARCHAR(MAX)
,Reason VARCHAR(MAX)
,RefSource VARCHAR(MAX)
,SevenDay VARCHAR(MAX)
,Transportation VARCHAR(MAX)
,Issues VARCHAR(MAX)
,Prapare VARCHAR(MAX)
,NextSteps VARCHAR(MAX)
) B;