Sql server 使用Where和Count from乘法表
我有两张桌子 问题 列:患者编号、遭遇日期、诊断1、诊断2 程序 列:患者编号、程序代码 我试图从问题表中计算具有特定诊断的唯一客户机的数量,并从程序表中计算具有特定程序的唯一客户机的数量 我使用where作为两者的内部连接,但是当我运行查询时,计数比我只计算具有特定诊断的客户机的计数要大,我认为这是错误的Sql server 使用Where和Count from乘法表,sql-server,Sql Server,我有两张桌子 问题 列:患者编号、遭遇日期、诊断1、诊断2 程序 列:患者编号、程序代码 我试图从问题表中计算具有特定诊断的唯一客户机的数量,并从程序表中计算具有特定程序的唯一客户机的数量 我使用where作为两者的内部连接,但是当我运行查询时,计数比我只计算具有特定诊断的客户机的计数要大,我认为这是错误的 select (select COUNT(DIAGNOSIS_1) From Problem, Procedure where problem.PATIENT_NO=procedure.
select (select COUNT(DIAGNOSIS_1) From Problem, Procedure where problem.PATIENT_NO=procedure.PATIENT_NO and problem.ENCOUNTER_DATE between '10/1/15' and '12/31/15' and problem.DIAGNOSIS_1 IN ( 'Z68.53', 'Z68.54', 'O99.210', 'E66.9', 'E66.3') and Procedure.PROCEDURE_CODE IN ( 'TS141', 'TS140'))
+ (select COUNT(Diagnosis_2) From Problem, Procedure where problem.PATIENT_NO=Procedure.PATIENT_NO and problem.ENCOUNTER_DATE between '10/1/15' and '12/31/15' and problem.DIAGNOSIS_2 IN ( 'Z68.53', 'Z68.54', 'O99.210', 'E66.9', 'E66.3') and Procedure.PROCEDURE_CODE IN ( 'TS141', 'TS140'))
如果我理解正确的话,那么你可能在寻找这个-
SELECT
COUNT(pr.Patient_NO)
FROM Problem
INNER JOIN [Procedure] pr
ON problem.PATIENT_NO = pr.PATIENT_NO
WHERE pr.ENCOUNTER_DATE BETWEEN '10/1/15' AND '12/31/15'
AND (
pr.DIAGNOSIS_1 IN ('Z68.53', 'Z68.54', 'O99.210', 'E66.9', 'E66.3')
AND pr.DIAGNOSIS_2 IN ('Z68.53', 'Z68.54', 'O99.210', 'E66.9', 'E66.3')
)
AND pr.PROCEDURE_CODE IN ('TS141', 'TS140')
假设你试图计算患者是否符合特定标准,这可能对你有用
SELECT COUNT(DISTINCT pbm.Patient_NO)
FROM Problem pbm
JOIN [Procedure] pdr ON pbm.Patient_NO = pdr.Patient_NO
WHERE pbm.ENCOUNTER_DATE BETWEEN '10/1/15'
AND '12/31/15'
AND (pbm.DIAGNOSIS_1 IN ('Z68.53','Z68.54','O99.210','E66.9','E66.3')
OR pbm.DIAGNOSIS_2 IN ('Z68.53','Z68.54','O99.210','E66.9','E66.3'))
AND pdr.PROCEDURE_CODE IN ('TS141','TS140')
您是否有第三个表名为patient?我没有第三个表。如果有TS141和TS140,但它们位于不同的行中,您是否可以计算程序代码列?就像有两行一样,患者编号相同,如果一行是TS141,另一行是TS140,那么计数会增加1?(如果这能更好地解释的话)有可能。。可能需要一个单独的查询来获取单独的计数并将其合并。。我来看看