![](/img/trans.png)
[英]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.