Я начинаю запрос с select (table1) и в итоге получаю операторы where, а затем снова начинаю с select (table2) с оператором where. Пожалуйста, посмотрите на изображение и дайте мне знать, как это сделать. Спасибо
Запрос ниже и выходные данные, которые я получаю, также ниже.
--//1st select statement //
SELECT
Measure = CASE WHEN abd.dosiqID = 'A321'
THEN 'C-DIFF'
WHEN abd.dosiqID = 'B43'
THEN 'MRSA'
WHEN abd.dosiqID = 'bill'
THEN 'CAUTI'
WHEN abd.dosiqID = 'rewq'
THEN 'CLABSI'
END
,SoundPatients = ram.AccountNumber
,DIAG = abd.dosiqID
,SoundPhysicians = rapd.Admitid
,LenOfStay = (CASE WHEN ram.AdmitDateTime IS NULL
THEN 1
WHEN DATEDIFF(DAY, ram.AdmitDateTime, COALESCE(vd.DischargeDateTime, GETDATE())) < 1
THEN 1
ELSE DATEDIFF(DAY, ram.AdmitDateTime, COALESCE(vd.DischargeDateTime, GETDATE()))
END
)
,Pt_Status = ram.RegistID
INTO sphy
FROM livefdb.dbo.REVERGE_REG ram
LEFT JOIN livefdb.dbo.ReProrData p ON p.SourceID = ram.SourceID
AND p.VisitID = ram.VisitID
LEFT JOIN livefdb.dbo.HiData vd ON vd.SourceID = ram.SourceID
AND vd.PatientID = ram.PatientID
AND vd.VisitID = ram.VisitID
AND vd.VisitType_MisRegTypeID = ram.RegistID
JOIN Abgnes abd ON abd.SourceID = ram.SourceID
AND abd.VisitID = ram.VisitID
JOIN ReProrData rapd ON rapd.SourceID = ram.SourceID
AND rapd.VisitID = ram.VisitID
LEFT OUTER JOIN AbsAcct_Main abm ON abm.SourceID = ram.SourceID
AND abm.VisitID = ram.VisitID
WHERE
CAST(ram.AdmitDateTime AS DATE) BETWEEN '20180401' AND '20180930'
AND ram.Facility_MisFacID IN ('mha', 'bha')
AND abd.dosiqID IN ('999.32', '996.64', '041.12', '008.45', 'A321', 'B43', 'bill', 'rewq')
AND rapd.Admitid IN ('DOC1', 'DOC2', 'DOC3', 'DOC4', 'DOC5', 'DOC6', 'DOC7', 'DOC8', 'DOC9')
AND ram.RegistID IN ('IN', 'INO')
--//2nd select statement //
SELECT
Measure = CASE WHEN abd.dosiqID = 'A321'
THEN 'C-DIFF'
WHEN abd.dosiqID = 'B43'
THEN 'MRSA'
WHEN abd.dosiqID = 'bill'
THEN 'CAUTI'
WHEN abd.dosiqID = 'rewq'
THEN 'CLABSI'
END
,TotalPatients = ram.AccountNumber
,DIAG = abd.dosiqID
,SoundPhysicians = rapd.Admitid
,LenOfStay = (CASE WHEN ram.AdmitDateTime IS NULL
THEN 1
WHEN DATEDIFF(DAY, ram.AdmitDateTime, COALESCE(vd.DischargeDateTime, GETDATE())) < 1
THEN 1
ELSE DATEDIFF(DAY, ram.AdmitDateTime, COALESCE(vd.DischargeDateTime, GETDATE()))
END
)
,Pt_Status = ram.RegistID
INTO sphy2
FROM livefdb.dbo.REVERGE_REG ram
LEFT JOIN livefdb.dbo.ReProrData p ON p.SourceID = ram.SourceID
AND p.VisitID = ram.VisitID
LEFT JOIN livefdb.dbo.HiData vd ON vd.SourceID = ram.SourceID
AND vd.PatientID = ram.PatientID
AND vd.VisitID = ram.VisitID
AND vd.VisitType_MisRegTypeID = ram.RegistID
JOIN Abgnes abd ON abd.SourceID = ram.SourceID
AND abd.VisitID = ram.VisitID
JOIN ReProrData rapd ON rapd.SourceID = ram.SourceID
AND rapd.VisitID = ram.VisitID
WHERE
CAST(ram.AdmitDateTime AS DATE) BETWEEN '20180401' AND '20180930'
AND ram.Facility_MisFacID IN ('mha', 'bha')
AND abd.dosiqID IN ('A321', 'B43', 'bill', 'rewq')
AND ram.RegistID IN ('IN', 'INO')
DROP TABLE sphy
DROP TABLE sphy2
END
GO
Агрегированные запросы по промежуточным результатам:
SELECT
Measure
,SoundPatients = COUNT(*)
,TotalPatientDays = SUM(LenOfStay)
FROM Sphy
GROUP BY Measure
ORDER BY Measure
SELECT
Measure
,TotalPatients = COUNT(*)
,TotalPatientDays = SUM(LenOfStay)
FROM Sphy2
GROUP BY Measure
ORDER BY Measure
Токовые выходы:
Measure SoundPatients TotalPatientDays
CLABSI 6 49
MRSA 33 219
Measure TotalPatients TotalPatientDays
CLABSI 6 49
MRSA 44 290
Мой желаемый вывод:
Measure SoundPatients TotalPatients TotalPatientDays
CLABSI 6 6 49
MRSA 33 44 290
** Пожалуйста, помните, что мне нужно количество данных и сумма lenofstay.и дайте мне знать, если какие-либо дополнительные вопросы или вопросы, и помогите мне в этом **