
[英]SQL server 2008, get a new table by selecting two columns from two different tables that do not share same column information
[英]SQL (server 2008) retrieve (distinct) data from different tables (stored in a new table's column)
这是问题。 我有几个带有油井数据的表。 它们中的大多数(不是全部)都具有UWI(代表唯一井标识符)和WELL_NAME列。 我设法使用一个查询,该查询使我知道哪些表具有UWI和WELL_NAME列(使用INFORMATION_SCHEMA)。 我将其保存为新表(UWITABLES)。 (对我而言)棘手的部分是从我从该INFORMATION_SCHEMA查询中获得的所有表中获取“ UWI”和“井名”的“主”表。 我已经尝试了Union方法,但是说实话,我得到的表列表有足够的表让我寻找另一种方法(希望这种方法可以利用我得到的表列表)。
总体情况如下:
******************************** * UWI | WELL_NAME | TABLE * ********************************
UWI,井名称和该条目源自的表。
TABLE_A:
******************************************** * UWI | WELL_NAME | TEST_NUMBER * ******************************************** * 005 | Well 1 | 1 * ******************************************** * 005 | Well 1 | 2 * ******************************************** * 005 | Well 1 | 3 * ******************************************** * 007 | Well 3 | 1 * ******************************************** * 007 | Well 3 | 2 * ********************************************
TABLE_B:
******************************************** * UWI | WELL_NAME | PROD_OIL * ******************************************** * 005 | Well 1 | 52131 * ******************************************** * 006 | Well 2 | 54364 * ******************************************** * 008 | Well 4 | 34538 * ******************************************** * 009 | Well 5 | 1886 * ********************************************
结果表:
********************************* * UWI | WELL_NAME | TABLE * ********************************* * 005 | Well 1 | TABLE_A * ********************************* * 005 | Well 1 | TABLE_B * ********************************* * 006 | Well 2 | TABLE_B * ********************************* * 007 | Well 3 | TABLE_A * ********************************* * 008 | Well 4 | TABLE_B * ********************************* * 009 | Well 5 | TABLE_B * *********************************
通过UWI进行订购不是必须的,只是想像这样放置它,这样就不会太混乱。 如果可能的话,我想从您的专业知识中受益,并获得有关如何构造查询的简短说明。 如果有一个简单的答案,我将不胜感激。 我只是从这里开始。 预先感谢所有人!
-麦克风
试试这个查询
select uwi,well_name,'Table1' as table
from table1
Group by Uwi,Well_name
Union all
select uwi,well_name,'Table2' as table
from table2
Group by Uwi,Well_name
要么
select distinct uwi,well_name,'Table1' as table
from table1
Union all
select distinct uwi,well_name,'Table2' as table
from table2
工会应该为您服务。 如果您有一个包含表名的表,则可以像这样构建动态查询。
DECLARE @Sql VARCHAR(MAX)
SELECT @Sql = COALESCE(@Sql + ' UNION ', '')
+ 'SELECT UWI, WELL_NAME,' + [TableName] + ' AS [Table] FROM ' + [TableName]
FROM UWITABLES
EXEC (@Sql)
UNION
会给您DISTINCT UWI, WELL_NAME, TABLE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.