如何对日期之间的患者执行sql查询

如何对日期之间的患者执行sql查询,sql,Sql,我想询问2019年至今首次诊断为x的患者,不包括2019年之前诊断为x的患者 当我使用下面的查询时,无论是否有陈述:和d[DOS]!

我想询问2019年至今首次诊断为x的患者,不包括2019年之前诊断为x的患者

当我使用下面的查询时,无论是否有陈述:和d[DOS]!<'2019'

有人能帮忙吗

谢谢

SELECT [id]
      ,[DiagnosisCD]
      ,[DOS]
FROM [diags] d
WHERE [DiagnosisCD] IN ('H91.2', 'H91.20', 'H91.21', 'H91.22', 'H91.23')
   AND d.[DOS] >= '2019'
   AND d.[DOS] !< '2019'

您可以使用聚合:

SELECT [id]
FROM [diags] d
WHERE [DiagnosisCD] IN ('H91.2', 'H91.20', 'H91.21', 'H91.22', 'H91.23')
GROUP BY id
HAVING MIN(DOS) >= 2019
如果DOS确实是一个日期,则使用:

HAVING MIN(DOS) >= '2019-01-01'
如果需要与这些诊断相关的所有行(即使每个患者有多行),则可以使用exists:

SELECT d.*
FROM [diags] d
WHERE d.DiagnosisCD IN ('H91.2', 'H91.20', 'H91.21', 'H91.22', 'H91.23') AND
      NOT EXISTS (SELECT 1 
                  FROM diags d2
                  WHERE d2.id = d.id AND
                        d2.DiagnosisCD IN ('H91.2', 'H91.20', 'H91.21', 'H91.22', 'H91.23') AND
                        d2.dos < 2019
                 );