簡體   English   中英

將兩個不同的表與主ID字段合並

[英]Union two different tables with a primary ID field

我有兩張桌子

MD_Master  (Medical checks)
Id
...

CD_Personal (Personal Checks)
Id
...

兩個表中的每個字段名稱都是不同的名稱,類型和數據。

但是,每個都有一個主鍵Id ,並且可能與其他對象沖突。

Id 101可以同時存在於MD_MasterCD_Personal

我想創建一個合並兩個表的視圖(結合MD_MedicalCD_Personal Id字段),但是我不知道如何處理Id

我希望視圖具有IdNumeric(19,0)

是否可以選擇並合並這兩個不同的表並創建唯一的ID?

謝謝

目前尚不清楚您要在這里做什么,但是您可以在每行上創建類似於以下內容的標識符:

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

通過查看記錄來自哪個表,這將使您能夠區分每一行。 然后,如果您有具有相同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

)

也許您可以將ID與某些東西連接起來以停止沖突? 您可以根據需要再次將其解析回去,即...

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

之后您打算如何處理數據?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM