我有以下问题,我知道如何从同一个表中找到缺少的记录,但我无法知道记录从哪里丢失:SQL Server 2012比较记录并根据动态位置找到丢失的记录
这里是主表
Location | Role | Subrole
A | R1 | SR1
A | R1 | SR2
A | R1 | SR3
B | R1 | SR1
B | R1 | SR2
B | R1 | SR3
C | R1 | SR1
C | R1 | SR2
D | R1 | SR1
位置的是主地点和所有其他位置应该是比较A.我的最终目标是拥有这样的:
MasterLocation | MasterRole | MasterSubrole | Location | Role | Subrole
A | R1 | SR1 | B | R1 | SR1
A | R1 | SR2 | B | R1 | SR2
A | R1 | SR3 | B | R1 | SR3
A | R1 | SR1 | C | R1 | SR1
A | R1 | SR2 | C | R1 | SR2
A | R1 | SR3 | C | R1 | MISSING OR NULL
A | R1 | SR1 | D | R1 | SR1
A | R1 | SR2 | D | R1 | MISSING OR NULL
A | R1 | SR3 | D | R1 | MISSING OR NULL
我已创建2个临时表
CREATE TABLE #LocA
(
Location Varchar(1),
Role Varchar(2),
SubRole VARCHAR(20)
)
CREATE TABLE #AllOthers
(
Location VARCHAR(1),
Role VARCHAR(2),
SubRole VARCHAR(20)
)
INSERT INTO #LocA
SELECT
Location, Role, SubRole
FROM
TABLE
WHERE
Location = 'A'
INSERT INTO #AllOthers
SELECT
Location, Role, SubRole
FROM
TABLE
WHERE
Location != 'A'
SELECT
A.Location AS MasterLocation,
A.Role AS MasterRole,
A.SubRole AS MasterSubrole
L.Location,
L.Role,
L.Subrole
FROM
#LocA AS A
LEFT JOIN
#Allothers AS L ON A.Role = L.Role
AND A.SubRole = L.Subrole
我越来越
MasterLocation | MasterRole | MasterSubrole | Location | Role|Subrole
A | R1 | SR1 | B | R1 | SR1
A | R1 | SR2 | B | R1 | SR2
A | R1 | SR3 | B | R1 | SR3
A | R1 | SR1 | C | R1 | SR1
A | R1 | SR2 | C | R1 | SR2
A | R1 | SR3 | NULL | NULL | NULL
A | R1 | SR1 | D | R1 | SR1
A | R1 | SR2 | NULL | NULL | NULL
A | R1 | SR3 | NULL | NULL | NULL
所以我其实不知道在哪里子角色是从,C或D缺失(此表有数百个地点。)
是在'在MasterSubrole'正确的价值目标表? – shawnt00
对不起,你是对的,我纠正了Master sub的作用。这是由于复制粘贴 – Overdrive