【发布时间】:2019-03-13 06:45:41
【问题描述】:
我从 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 总和。如果有任何其他问题或疑问,请告诉我,并在此方面为我提供帮助 **
【问题讨论】:
-
欢迎来到stackoverflow。请花一分钟时间获取tour,尤其是How to Ask。样本数据最好以DDL + DML 的形式提供。请edit您的问题包括它,您当前的尝试和您想要的结果。更多详情,read this.
-
请不要使用图片更新您的帖子,并在帖子中显示您想要的内容。
-
我认为你需要一个左连接
-
请发布您使用的查询。你会很快得到答复
-
@kreme123 仅仅因为有人要求您发布更多信息并不意味着他们会尽快回复您,甚至根本不会回复。大多数
volunteer他们有时间帮助他人的人都有全职工作和其他承诺。如果您希望得到任何帮助,请尊重其他成员。
标签: sql sql-server tsql reporting-services ssms