与伯ID字段联盟两个不同的表(Union two different tables with a p

2019-09-22 03:49发布

我有两个表

MD_Master  (Medical checks)
Id
...

CD_Personal (Personal Checks)
Id
...

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

然而,每个人都有一个主键Id ,并有可能与其他eath冲突。

Id 101可以同时存在MD_MasterCD_Personal

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

我想的观点有一个Numeric(19,0)Id

是否可以选择,做这两个diffeent表的联合,并创建一个独特的ID?

谢谢

Answer 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

)


Answer 2:

这是不完全清楚你正在尝试做的,但你可以创建一个类似于此的每一行的标识:

SELECT Id, 'M' as tbl
FROM MD_Master
UNION ALL
SELECT Id, 'P' as tbl
FROM CD_Personal

这将让你的每一行区分,由记录来自哪个表明的。 然后,如果你有相同的记录ID就知道是来自哪个表。



Answer 3:

也许你可以连接的ID东西来停止冲突? 你可以解析它在必要时再次退了出去,即...

SELECT CONVERT(varchar, ID) + 'MD', FirstName, LastName, DOB FROM MD_Master
UNION
SELECT CONVERT(varchar, ID) + 'CD', FirstName, LastName, DOB FROM CD_Personal

什么是你想用事后的数据呢?



文章来源: Union two different tables with a primary ID field