如何查找TSQL中不匹配的记录?

时间:2018-08-07 15:34:33

标签: sql-server tsql

我从事件类型列表开始

CREATE TABLE [dbo].[jch_test_EventTypeName](
    [EventTypeName] [varchar](50) NULL
) ON [PRIMARY]
GO

带有数据

EventTypeName
"Event Type A"
"Event Type B"
"Event Type C"
"Event Type D"

还有患者的事件列表

CREATE TABLE [dbo].[jch_test_Events](
    [PatID] [varchar](50) NULL,
    [EventTypeName] [varchar](50) NULL,
    [EventTime] [varchar](50) NULL
) ON [PRIMARY]
GO

具有如下所示的数据

PatID   EventTypeName   EventTime
"abc"   "Event Type A"  01:00
"abc"   "Event Type B"  01:05
"abc"   "Event Type C"  01:07
"xyz"   "Event Type A"  01:00
"xyz"   "Event Type C"  01:07

如何形成tsql查询以查看哪些患者缺少“事件类型D”?

2 个答案:

答案 0 :(得分:2)

SELECT DISTINCT PatID
FROM jch_test_Events
WHERE PatId NOT IN (SELECT PatId FROM jch_test_Events WHERE EventTypeName = 'Event Type D')

只需对您的“排除”条件进行子选择

答案 1 :(得分:1)

这也应该起作用

select distinct PatID from [dbo].[jch_test_Events]
except 
select distinct PatID from [dbo].[jch_test_Events]
where EventTypeName = 'Event Type D'