一尘不染

将两个不同的表与一个主ID字段并集

sql

我有两张表

MD_Master(体检)
ID
...

CD_个人(个人支票)
ID
...

两个表中的每个字段名称都是不同的名称,类型和数据。

但是,每个都有主键Id,并可能与其他冲突。

Id 101可以同时存在MD_Master,并CD_Personal

我想创建一个合并两个表(合并表MD_MedicalCD_Personal Id字段)的视图,但是我不知道如何处理Ids。

我希望这个观点Numeric(19,0)Id

是否可以选择并合并这两个不同的表并创建唯一的ID?

谢谢


阅读 121

收藏
2021-05-16

共1个答案

一尘不染

您可以尝试这样的事情:

declare @medical table(id int, checks varchar(10))

declare @personal table(id int, checks varchar(10))

insert into @medical 
select 1, 'abc1'
union
select 2, 'abc2'

insert into @personal
select 1, 'abc1'
union
select 2, 'abc22'

;WITH CTE AS (
select *, 'M' As Src from @medical 
union
select *, 'P' As Src from @personal
)

SELECT checks, src, ROW_NUMBER() over (order by checks, id) new_id FROM CTE

在您的情况下:

SELECT checks, src, ROW_NUMBER() over (order by [checks], id) new_id 
FROM 
(

SELECT id, [Medical checks] Checks, 'M' as Src FROM MD_Master
UNION ALL
SELECT id, [Personal checks] Checks, 'P' as Src FROM CD_Personal

)
2021-05-16