我有 2 个表“Order”和“OrderDetails”,其结构类似,如下所示。Order.id 是 OrderDetails 的外键
相同的结构存在于 3 个不同的区域数据库中。
现在
我们需要将 3 个区域表合并为一个。即(从2*3=6表到2表)
Order.id 可以在所有地区重复
例如:
region1DB.Order.id{1,2,3,4,5} , region2DB.order.id{1,2,3,4,5}
表结构
我需要 2 个表的最终输出,其中包含来自 3 个数据库的数据以及所有关系。
例如:如果第一个区域表有 10 个 orderid,则在合并来自第二个区域 order.id 的数据时,将以 11,12,13 开始/更新(其中第二个区域中的实际数字为 1,2,3,4)并在Orderdetails 它也应该被反映。
你能帮我查询一下这个合并吗?或任何其他可用的最新技术,如 sql 合并?如果是,请给我一个样品。
我是 sql 新手,我看不到合并关系表的完美示例。
这是我加入第一个表的查询
select tab1.ID, tab1.OrderName
from [DB1].[dbo].[Order] tab1
union all
select tab2.id + (select max(id) from [DB1].[dbo].[Order]) ,tab2.OrderName
from [DB2].[dbo].[Order] tab2
-> 查询合并第二个表(OrderDetails)
declare @t varchar(8000)
set @t=(select max(id) from [DB1].[dbo].[Order])
来自 [DB1].[dbo].[OrderDetails] tab1
select tab1.OrderID, tab1.productCode from [DB1].[dbo].[OrderDetails] tab1
union all
select
case when
tab2.OrderID> (@t)
then tab2.OrderID + (@t)
when
tab2.OrderID<=(@t)
then
tab2.OrderID
END
,tab2.productCode
from [DB2].[dbo].[OrderDetails] tab2
order by OrderID
谢谢
国民账户体系