2014-02-18 72 views
1

我有以下表「Custumer」:的毗連兩個SQL的結果

Customer_ID  Customer_Name 

01    John 
02    Mary 
03    Marco 

我想從一個選擇返回以下結果:

Query_Result 

01 
02 
03 
John 
Mary 
Marco 

是否有可能?將兩個列合併爲一個?

回答

3

一種方法(假設CUSTOMER_ID是字符類型)

SELECT 
    Customer_ID 
FROM Customer 

UNION ALL 

SELECT 
    Customer_Name 
FROM Customer 
1

嘗試使用UNION ALL,以下內容應該適合您。

SELECT CONVERT(varchar(30), Customer_ID) FROM Customer 
UNION ALL 
SELECT Customer_Name FROM Customer 
+1

儘管在使用'CONVERT'函數時varchar的長度是30個字符,但作爲一個好習慣,您應該始終明確定義長度。 – Kaf

+0

'Customer_ID'已經看起來像一個'VARCHAR'類型(它有0的前導)。另外,正如@Kaf指出的那樣,指定轉換時的長度是一種很好的做法。 –

+1

@Kaf和@Jon謝謝,修正了'varchar'的大小,我使用了'CONVERT',因爲在OP的問題中沒有指出'Customer_ID'字段是NUMERIC還是varchar數據類型。 – user2989408

1

基本上,你有兩個選擇來實現這一目標:

  1. 從每一列中選擇數據,並使用UNION ALL合併結果。請注意確保每個選擇的結果產生相同的數據類型。

  2. 逆透視表作爲在下面的例子:

    SELECT AnyColumn 
    FROM 
    (SELECT Customer_ID, Customer_Name 
        FROM Customer) p 
    UNPIVOT 
    (
        AnyColumn FOR Customer IN 
        (Customer_ID, Customer_Name) 
    ) AS unpvt; 
    

就個人而言,我會質疑做這樣的操作的必要性。如果你發現自己被迫這樣做,我建議你重新考慮你的數據模型。