自加入删除重复记录

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

我有以下内容:

CREATE TABLE [dbo].[a_table1]
(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [caseID] [int] NOT NULL,
    [officeID] [int] NOT NULL,
    [location] [varchar](50) NULL
) ON [PRIMARY]
GO

INSERT INTO a_table1 VALUES (23, 44, 'hq') 
INSERT INTO a_table1 VALUES (86, 44, 'hq') 
INSERT INTO a_table1 VALUES (26, 44, 'hq') 
INSERT INTO a_table1 VALUES (32, 44, 'hq') 

INSERT INTO a_table1 VALUES (15, 34, 'satellite') 
INSERT INTO a_table1 VALUES (32, 34, 'satellite') 
INSERT INTO a_table1 VALUES (33, 34, 'satellite') 
INSERT INTO a_table1 VALUES (86, 34, 'satellite') 
INSERT INTO a_table1 VALUES (17, 34, 'satellite') 

SELECT * 
FROM a_table1 

这是所需的输出:

案例ID 办公室ID
23 44
86 44
26 44
32 44
15 44
33 44
17 44

基本上,从

caseId
位置获取所有
hq
,并仅获取卫星位置中不存在的
caseId

有什么想法吗?

sql sql-server
1个回答
0
投票

一个解决方案是:

select caseid, 44 as officeid from (select distinct caseid from a_table1) x

结果:

 caseid  officeid 
 ------- -------- 
 15      44       
 17      44       
 23      44       
 26      44       
 32      44       
 33      44       
 86      44       

请参阅 db<>fiddle 处的运行示例。

但是,我不明白为什么您删除了值

34
而改为
44

© www.soinside.com 2019 - 2024. All rights reserved.