我们希望自20170301年以来不在这里的行(图表意味着患者),但我们希望看看2016年之前来过这里的人。我们系统中的许多记录都是很长一段时间不是患者的人。
我添加了“not exists”,但这并没有返回任何记录。
jQuery
答案 0 :(得分:0)
要解释一下,您的目标是返回2016年1月1日之后有约会但未在2017年3月1日之后预约的图表(代表患者)。问题在于您的“而不存在”这个短语。这将返回所有图表约会日期。相反,您希望在2017年3月1日之后返回带有约会的图表列表。
Select ab.chart
From [Dentrix].[dbo].[DDB_APPT_BASE] ab
Where ab.APPTDATE > '20160101'
And ab.chart not in
(Select app.chart
From [Dentrix].[dbo].[DDB_APPT_BASE] as app
WHERE app.APPTDATE > '20170301')
请注意,这些比较不包括3月1日和1月1日。您可以考虑使用> =来包含这些日期。
答案 1 :(得分:0)
您只需要在子查询中添加一行。也就是说,检查主查询中的图表是否与子查询中的图表匹配。否则你混合苹果和橙子:
SELECT DISTINCT chart
FROM [Dentrix].[dbo].[DDB_APPT_BASE] as a
WHERE a.APPTDATE > '20160101'
AND NOT EXISTS
(SELECT 1
FROM [Dentrix].[dbo].[DDB_APPT_BASE] as b
WHERE b.APPTDATE > '20170301'
AND a.chart = b.chart)