我有以下表“Custumer”:的毗连两个SQL的结果
Customer_ID Customer_Name
01 John
02 Mary
03 Marco
我想从一个选择返回以下结果:
Query_Result
01
02
03
John
Mary
Marco
是否有可能?将两个列合并为一个?
我有以下表“Custumer”:的毗连两个SQL的结果
Customer_ID Customer_Name
01 John
02 Mary
03 Marco
我想从一个选择返回以下结果:
Query_Result
01
02
03
John
Mary
Marco
是否有可能?将两个列合并为一个?
一种方法(假设CUSTOMER_ID是字符类型)
SELECT
Customer_ID
FROM Customer
UNION ALL
SELECT
Customer_Name
FROM Customer
尝试使用UNION ALL
,以下内容应该适合您。
SELECT CONVERT(varchar(30), Customer_ID) FROM Customer
UNION ALL
SELECT Customer_Name FROM Customer
基本上,你有两个选择来实现这一目标:
从每一列中选择数据,并使用UNION ALL
合并结果。请注意确保每个选择的结果产生相同的数据类型。
逆透视表作为在下面的例子:
SELECT AnyColumn
FROM
(SELECT Customer_ID, Customer_Name
FROM Customer) p
UNPIVOT
(
AnyColumn FOR Customer IN
(Customer_ID, Customer_Name)
) AS unpvt;
就个人而言,我会质疑做这样的操作的必要性。如果你发现自己被迫这样做,我建议你重新考虑你的数据模型。
尽管在使用'CONVERT'函数时varchar的长度是30个字符,但作为一个好习惯,您应该始终明确定义长度。 – Kaf
'Customer_ID'已经看起来像一个'VARCHAR'类型(它有0的前导)。另外,正如@Kaf指出的那样,指定转换时的长度是一种很好的做法。 –
@Kaf和@Jon谢谢,修正了'varchar'的大小,我使用了'CONVERT',因为在OP的问题中没有指出'Customer_ID'字段是NUMERIC还是varchar数据类型。 – user2989408