这是问题所在。我有几张桌子里面有油井数据。他们中的大多数(不是全部)都有一个UWI - 它代表Unique Well Identifier-和WELL_NAME列。我设法使用一个查询,让我知道哪些表有UWI和WELL_NAME列(使用INFORMATION_SCHEMA)。我把它保存为新表(UWITABLES)。棘手的部分(对我来说)一直是从我从INFORMATION_SCHEMA查询中获得的所有表中获得一个“主”表(UWI和Well Names)。 我已经尝试了Union方法,但说实话,我得到的表列表有足够的表来让我寻找一种不同的方法(希望利用我得到的表列表)。
整体情况如下:
******************************************** * 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 * ********************************************
UWI,Well名称以及该条目所源自的表格。
TABLE_A:
******************************************** * UWI | WELL_NAME | PROD_OIL * ******************************************** * 005 | Well 1 | 52131 * ******************************************** * 006 | Well 2 | 54364 * ******************************************** * 008 | Well 4 | 34538 * ******************************************** * 009 | Well 5 | 1886 * ********************************************
表-B:
********************************* * 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 * *********************************
结果表:
WHERE RouterCallKey IN ( SELECT RouterCallKey FROM Termination_Call_Detail WHERE DateTime > CONVERT(DATE,GETDATE()) )
UWI的订单不是必须的,只是想把它放在这样,所以它不那么凌乱。如果可能的话,我希望从您的专业知识中受益,并获得有关如何构建查询的简短而简单的解释。如果一个简单的答案是可能的,我会很感激。我刚刚开始。提前全部感谢!
-Mike
答案 0 :(得分:0)
尝试此查询
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
答案 1 :(得分:0)
联盟应该为你工作。如果你有一个包含所需表名的表,你可以构建一个这样的动态查询。
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