0

我有两张桌子

MD_Master(医疗检查)
ID
...

CD_Personal(个人支票)
ID
...

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

但是,每个都有一个 Primary Key Id,并且可能会相互冲突。

Id 101可以同时存在于MD_MasterCD_Personal

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

我希望视图有一个Numeric(19,0)for Id

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

谢谢

4

3 回答 3

3

目前尚不清楚您在这里尝试做什么,但您可以在每一行上创建一个标识符,类似于:

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

这将允许您通过查看记录来自哪个表来区分每一行。然后,如果您有相同的记录,ID您将知道来自哪个表。

于 2012-09-05T16:06:49.540 回答
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

)
于 2012-09-05T16:05:06.343 回答
0

也许您可以将 ID 与阻止冲突的东西连接起来?如有必要,您可以再次解析它,即...

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

之后你想对数据做什么?

于 2012-09-05T16:02:15.867 回答