2014-02-18 43 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; 
    

就个人而言,我会质疑做这样的操作的必要性。如果你发现自己被迫这样做,我建议你重新考虑你的数据模型。