我有两张表
MD_Master(体检) ID ... CD_个人(个人支票) ID ...
两个表中的每个字段名称都是不同的名称,类型和数据。
但是,每个都有主键Id,并可能与其他冲突。
Id
即Id 101可以同时存在MD_Master,并CD_Personal
101
MD_Master
CD_Personal
我想创建一个合并两个表(合并表MD_Medical和CD_Personal Id字段)的视图,但是我不知道如何处理Ids。
MD_Medical
我希望这个观点Numeric(19,0)对Id。
Numeric(19,0)
是否可以选择并合并这两个不同的表并创建唯一的ID?
谢谢
您可以尝试这样的事情:
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 )