簡體   English   中英

SQL(Server 2008)從不同的表中檢索(不同的)數據(存儲在新表的列中)

[英]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,井名稱和該條目源自的表。

  • 一些表具有重復的UWI和井名(某些井在不同的深度間隔上進行測試,因此對於這些“測試”表,我將具有重復的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM