我有以下問題,我知道如何從同一個表中找到缺少的記錄,但我無法知道記錄從哪裏丟失: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