У меня есть две таблицы, таблица 1) ED_NOTES_MASTER и таблица 2) CPT_Master.
Каждая таблица имеет несколько записей на Pt_FIN (ID). Например, данные таблицы 1 выглядят следующим образом:
Pt_FIN Result_title_text result
1 PowerNote test string 1.....
1 Charges test string 2.....
1 Procedure test string 3.....
ШАГ 1: я хочу создать две переменные ([Scribe Present], [Critical Care Note]) с использованием таблицы 1, и каждая из них будет связана с уникальнымID и сделать это, я написал следующий код:
Select
PT_FIN, [Scribe Critical Care],
CASE WHEN ([Scribe Critical Care] like '%acting as scribe%')Then '1' Else '0' End [Scribe Present],
CASE WHEN ([Scribe Critical Care] like '%9929%')Then '1' Else '0' End [Critical Care Note]
FROM
(
SELECT DISTINCT ST2.[Pt_fin],
SUBSTRING(
(
SELECT ','+ST1.[Result] AS [text()]
FROM [ED_NOTES_MASTER] ST1
WHERE ST1.PT_FIN = ST2.PT_FIN AND (ST1.RESULT_TITLE_TEXT = 'ED Physician Charges' OR NOTE_TYPE like '%PowerNote%') AND (TRACKING_GROUP like '%EDU%')
Order BY PT_FIN
FOR XML PATH ('')
), 1, 30000) [Scribe Critical Care]
FROM [ED_NOTES_MASTER] ST2
Where RESULT_DT_TM > @StartDate and RESULT_DT_TM < @EndDate AND (TRACKING_GROUP like '%EDU%')
Вывод этого кода процедуры следующие:
Pt_FIN [Scribe Critical Care] [Scribe Present] [Critical Care Note]
1 test string.... 1 1
2 test string.... 0 1
3 test string.... 1 0
ШАГ 2: Я хотел бы объединить эту таблицу /код с таблицей 2) CPT_Master, где данные имеют несколько записей на ребро и выглядят так:
Pt_FIN CPT
1 99291
1 14623
1 86436
При объединении данных, полученных из кода 1, с CPT_Master, я хочу сохранить каждую запись из таблицы кода 1 иконкатенировать переменную CPT из CPT_Master и создать переменную (1/0), если переменная конкатенации CPT содержит «9929». Например, я хочу, чтобы конечный результат выглядел следующим образом:
Pt_FIN [Scribe Critical Care] [Scribe Present] [Critical Care Note] [CC Billed]
1 test string.... 1 1 0
2 test string.... 0 1 1
3 test string.... 1 0 1
Я пытаюсь использовать полный код, приведенный ниже, но в верхнем операторе select я не могу получить переменные, созданные вконечные операторы выбора.
USE EMTCQIData
DECLARE @StartDate Date
DECLARE @EndDate Date
Set @StartDate = '09/01/2019'
Set @EndDate = '10/01/2019'
Select *,
CASE WHEN ([Critical Billed] like '%9929%')Then '1' Else '0' End [Critical Care Note]
FROM
(
SELECT DISTINCT CPT.[fin],
SUBSTRING(
(
SELECT ','+CPT1.[CPT] AS [text()]
FROM CPT_Master CPT1
WHERE CPT1.FIN = CPT.FIN
Order BY FIN
FOR XML PATH ('')
), 1, 30000) [Critical Billed]
FROM CPT_Master CPT
Right JOIN
(
Select
PT_FIN, [Scribe Critical Care],
CASE WHEN ([Scribe Critical Care] like '%acting as scribe%')Then '1' Else '0' End [Scribe Present],
CASE WHEN ([Scribe Critical Care] like '%9929%')Then '1' Else '0' End [Critical Care Note]
FROM
(
SELECT DISTINCT ST2.[Pt_fin],
SUBSTRING(
(
SELECT ','+ST1.[Result] AS [text()]
FROM [ED_NOTES_MASTER] ST1
WHERE ST1.PT_FIN = ST2.PT_FIN AND (ST1.RESULT_TITLE_TEXT = 'ED Physician Charges' OR NOTE_TYPE like '%PowerNote%') AND (TRACKING_GROUP like '%EDU%')
Order BY PT_FIN
FOR XML PATH ('')
), 1, 30000) [Scribe Critical Care]
FROM [ED_NOTES_MASTER] ST2
Where RESULT_DT_TM > @StartDate and RESULT_DT_TM < @EndDate AND (TRACKING_GROUP like '%EDU%')
) sub
) AS ST2 ON CPT.FIN= ST2.[Pt_fin]
) sub