【发布时间】:2020-04-27 00:54:02
【问题描述】:
假设我有两个临时表,其中的数据看起来像这样......
#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 record has 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 中
【问题讨论】:
标签: sql sql-server exists