2013-08-05 65 views
1

我有三個不同的表,我需要從三個表中的相同列,我需要把所有的值放入一個輸出列而不會丟失任何記錄。下面是現有的查詢建議我進行一些修改從列合併數據到一列

SELECT 
    dbo.dealer_program_details.o_comments, 
    dbo.Self_Am.o_comments, 
    dbo.Coop_Payment_Detail.o_comments 
    FROM 
    dbo.dealer_program_details 
    INNER JOIN 
    dbo.Self_Am 
    ON 
    (
     dbo.dealer_program_details.DEALER_CODE = dbo.Self_Am.Dealer_Code) 
    INNER JOIN 
    dbo.Coop_Payment_Detail 
    ON 
    (
     dbo.dealer_program_details.DEALER_CODE = dbo.Coop_Payment_Detail.Dealer_Code) 

enter image description here

現在我想所有這些分三路進入一個單列

回答

2

如果你希望他們在一列,然後將它們連接在一起:

SELECT (dbo.dealer_program_details.o_comments + dbo.Self_Am.o_comments + 
     dbo.Coop_Payment_Detail.o_comments 
     ) as OneColumn 
FROM dbo.dealer_program_details INNER JOIN 
    dbo.Self_Am 
    ON dbo.dealer_program_details.DEALER_CODE = dbo.Self_Am.Dealer_Code INNER JOIN 
    dbo.Coop_Payment_Detail 
    ONdbo.dealer_program_details.DEALER_CODE = dbo.Coop_Payment_Detail.Dealer_Code; 

在Sybase中,您不必擔心NULL值,因爲它們被視爲空字符串。在SQL Server中,如果任何列值爲NULL,結果將爲NULL

編輯:

您可以選擇的第一個非空行,通過使用coalesce()

SELECT coalesce(dbo.dealer_program_details.o_comments, dbo.Self_Am.o_comments, 
     dbo.Coop_Payment_Detail.o_comments 
     ) as OneColumn 

但是,如果兩個(或更多)列有意見,那麼你將只保留第一個非 - 一個。

+0

我需要一些像union這樣的東西 –

+0

它的作品謝謝Gordon –

+0

Gordon在這裏有任何其他方法由於concatination我們正在合併的行。有沒有什麼辦法可以讓行與合併排? –