我有3个数据库,我需要提取数据(让他们称之为DB1,DB2和DB3)。 从DB1我选择一个返回如下内容的查询:
ORDER DESC TOTAL ORGANIZATION
=============================================
262 Order1 5129 116
629 Order2 123 138
915 Order3 95 138
159 Order4 1932 116
然后从DB2和DB3中选择此信息(两个表都相同,但来自不同组织的不同数据)
DB2(ORG 116):
ORDER TYPE
==================
262 2
159 5
856 3
629 2
DB3(ORG 138):
ORDER TYPE
==================
629 1
915 4
012 1
262 5
正如您所看到的,两个组织都可以使用相同的订单号,但类型不同。
如何将DB1与DB2和/或DB3连接以提取TYPE列,但是根据DB1组织列查找差异数据库?
结果如下:
ORDER DESC TOTAL ORGANIZATION TYPE
===========================================================
262 Order1 5129 116 2
629 Order2 123 138 1
915 Order3 95 138 4
159 Order4 1932 116 5
正如您所看到的,对于ORDER 262,我从DB2获得了Type 2(而不是来自DB3,因为ORG是116)而对于ORDER 629我从DB3获得了Type 1(而不是来自DB2,因为ORG是138)
我的简化查询就像这样(我使用WITH ... AS因为查询很长而且每个都来自不同的服务器,所以这样一切看起来都更有条理):
With EAM as (
Select Order, Desc, Total, Organization
from Table1
),
AP116 as (
select order, type
from table2
),
AP138 as (
select order, type
from table3
)
select *
from EAM inner join AP116 on EAM.order = AP116.order
此查询工作正常但链接所有订单与AP116。我需要使用CASE或其他东西让我选择AP116或AP138,具体取决于最后一行的ORG。
答案 0 :(得分:2)
对于一组不同的数据库,我建议将其写为联合:
Select Order, Desc, Total, Organization, Table2.Type
from Table1
join Table2 on...
where Organization = 116
union
Select Order, Desc, Total, Organization, Table3.Type
from Table1
join Table3 on...
where Organization = 138