我处理sql server 2012查询,面临一个问题:当临时表上至少有一个装配场记录时,我无法更新状态 #rev
匹配临时表 #location
基于修订id。
预期结果是:
Revision Id Status
------------------------
1900 Found
2000 Not Found
5000 Found
例如:修订id 1900状态为 Found
因为临时表中的修订id为1900 #rev
等于 LocRevisionId
在温度表中 #location
临时表中的装配地点 #rev
等于 locAssemblySiteId
在温度表中 #location
至少一次。
和
修订id 2000状态为 Not Found
因为修订版id 2000在 #rev
等于 LocRevisionId
在 #location
和装配现场 #rev
不等于 locAssemblySiteId
在 #location
至少一次。
create table #rev
(
RevisionId int,
AssemblySiteId int,
Status nvarchar(200)
)
insert into #rev (RevisionId, AssemblySiteId)
values (1900, 200), (2000, 300), (5000, 800)
create table #location
(
locRevisionId int,
locAssemblySiteId int
)
insert into #location (locRevisionId, locAssemblySiteId)
values (1900, 200), (1900, 150),
(2000, 290), (2000, 310),
(5000, 800), (5000, 820)
1条答案
按热度按时间6jjcrrmo1#
你可以用
exists
和一个case
表达式:如果每次修订的位置表中最多只有一行,则
left join
也是一种可能的选择: