[英]Union two different tables with a primary ID field
我有兩張桌子
MD_Master (Medical checks) Id ... CD_Personal (Personal Checks) Id ...
兩個表中的每個字段名稱都是不同的名稱,類型和數據。
但是,每個都有一個主鍵Id
,並且可能與其他對象沖突。
即Id
101
可以同時存在於MD_Master
和CD_Personal
我想創建一個合並兩個表的視圖(結合MD_Medical
和CD_Personal
Id
字段),但是我不知道如何處理Id
。
我希望視圖具有Id
的Numeric(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.