在相应表中查找丢失的记录

问题描述 投票:1回答:2

假设我有两个临时表,其数据看起来像这样...

 #Temp1
 Id   IDNo       CdId       ApptDate        Proc
 1    X111       PP         3/3/2020        N
 2    X222       ZZ         3/3/2020        N
 3    X333       HH         3/3/2020        Y


 #Temp2
 ID  IDNo      CdID        ApptDate        Proc
 1   X111      PP          3/3/2020        Y
 2   X222      ZZ          3/3/2020        N
 3   X333      HH          3/3/2020        Y
 4   X444      BB          3/5/2020        Y

这是我想要实现的目标

1)排除#TEMP1和#TEMP2中在IDNO,CdId,ApptDate,PROC = Y上具有相同匹配项的所有记录

我只在发现这些情况时很有趣:

1)从#Temp1或#Temp2中查找与除PROC之外的所有列都匹配的记录。因此,例如,#Temp1在#Temp2中具有相应的记录。 #Temp1具有PROC = N,而#Temp2具有PROC = Y,因此在#TEMP1中显示记录,并添加一列,例如DESC ='TEMP1记录具有Proc = N'

2)如果#TEMP1或#TEMP2在任何一个表中均没有对应的记录,则将该记录显示为DESC ='TEMP1没有该记录),反之亦然。

3)如果两个表中都存在匹配的记录,但是两个记录的PROC = N,则显示两条记录,消息为:'Temp1记录的Proc = N','Temp2记录的Proc = N'

我希望达到的所有结果都是:

ID    IdNo           CdID          ApptDate        DESC
 1    X111           PP            3/3/2020        'TEMP1 has Proc = N'
 2    X222           ZZ            3/3/2020        'TEMP1 has PROC = N'
 3    X222           ZZ            3/3/2020        'TEMP2 has PROC = N'
 4    X444           BB            3/5/2020        'TEMP 1 Does not have matching record'

以上结果中>

行1:该记录存在于#Temp1和#Temp2中,但#Temp1 Proc = N

行2,3:此记录存在于#Temp1和#Temp2中,但在两种情况下PROC = N

第4行:该记录存在于#Temp2中,但不存在于#Temp1中

假设我有两个临时表,其数据如下所示:#Temp1 ID IDNo CdId ApptDate Proc 1 X111 PP 3/3/2020 N 2 X222 ZZ 3 / ...

sql sql-server exists
2个回答
1
投票
嗯。 。 。我认为您想要的逻辑使用union all

1
投票
您也可以使用JOIN,这是demo。如果两个表中的记录都为statement,则我将情况设为PROC = Y
© www.soinside.com 2019 - 2024. All rights reserved.