2012-11-19 147 views
0

我已閱讀了大量關於合併表格的示例,但大多數人都有可連接的內容。我沒有任何數據可以加入,除非使用FULL JOIN,這會給我留下多個具有相同名稱的列,而在相應查詢中沒有數據的情況下爲NULL。將兩個表格的結果合併到一個統一的表格中,但不包含公共數據

CREATE TABLE #tmpBus 
(
id varchar(50), 
partnumber varchar(400), 
attributecname nvarchar(255), 
attributevalue nvarchar(1700), 
assetfilename varchar(85), 
orderby varchar(10) 
) 

CREATE TABLE #tmpBus1 
(
id varchar(50), 
name varchar(500), 
url varchar(2550), 
assetfilename varchar(850), 
orderby varchar(10) 
) 

CREATE TABLE #tmpBus2 
(
partnumber varchar(400), 
attributecname varchar(255), 
attributevale varchar(1700), 
orderby varchar(10), 
assetfilename varchar(850), 
name varchar(500), 
url varchar(2550) 
) 

INSERT INTO #tmpBus exec getSectionNewData 5665976; 

INSERT INTO #tmpBus1 exec getSectionFeaturedData 5665976; 

SELECT DISTINCT * FROM #tmpBus tb 
FULL JOIN #tmpBus1 tb1 
ON tb.partnumber=tb1.name 

DROP TABLE #tmpBus 
DROP TABLE #tmpBus1 
DROP TABLE #tmpBus2 

我的目標是獲得從2代臨時表我創建成一個統一的表(#tmpBus2)的數據(#tmpBus &#tmpBus1)。我嘗試了所有類型的連接,並通過我能想到的方法進行分組。以下是上述代碼輸出的屏幕截圖。注意NULL。我正試圖將#tmpBus2中的平坦表與每個表的相應值相關聯。因此,id,assetfilename和orderby字段將被統一,而不是2個單獨的列以及按order by列排序的功能。

enter image description here

任何幫助,讓我在朝着正確的方向將是超級有用。

+1

你是從源表中的項目的每個組合後?如果是這樣,請進行交叉連接(不需要聲明)。 http://msdn.microsoft.com/en-us/library/ms190690(v=sql.105).aspx – JohnLBevan

+0

是的,我已經嘗試了交叉連接,輸出和上面一樣。 –

回答

2

使用簡單UNION加入

SELECT id, partnernumber, attributecname, attributevalue, assetfilename, orderby, NULL AS url 
FROM #tmpBus tb 
UNION 
SELECT id, name, NULL, NULL, assetfilename, orderby, url 
FROM #tmpBus1 tb1 
ORDER BY orderby 
+1

謝謝。在這篇文章之前,我嘗試過一個聯盟,但不是以你的方式。再次感謝! –

+0

@Heather Roberts upvote for good answer;) –

0

如果你只是想鞏固多列到單個的人,你可以試試這個:

SELECT 
--isnull(tb.id, tb1.id)       Id 
    isnull(tb.partnumber, tb1.name)    PartNumber 
, tb.attributecname        AttributeCName 
, tb.attributevalue        AttributeValue 
, isnull(tb.orderby, tb1.orderby)    OrderBy 
, isnull(tb.assetfilename, tb1.assetfilename) AssetFilename 
, isnull(tb1.name, tb.partnumber)    Name 
, tb1.url          URL 
FROM #tmpBus tb 
FULL JOIN #tmpBus1 tb1 
ON tb.partnumber=tb1.name 

不知道更多關於你的數據/要求我不能幫助更多 - 如果你能提供一些樣本輸入數據&預期的輸出雖然我(或某人在這裏)可以調整查詢,以滿足您的需求。

相關問題