我是SQL的新手,我不确定Google会怎么做。我有三个不同列数的表。我想将以下三个表组合成一个列(没有重复)。
表1
Col1 Col2 Col3
1 a aa
2 b ab
3 c bb
表2
Col1 Col2
123 Test
456 Test2
346 Test3
表3
Col1 Col2 Col3 Col4
5695 93234 ABC CDE
4534 92349 MSF KSK
3244 12323 SLE SNE
预期输出:
FileOutput
1aaa
123Test
569593234ABCCDE
2bab
456Test2
453492349MSFKSK
...
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
不确定如何解析数据,但您可以这样做:
select convert(varchar(100), col1) + convert(varchar(100), col2) + convert(varchar(100), col3) as fileOutput
from table1
union all
select convert(varchar(100), col1) + convert(varchar(100), col2) as fileOutput
from table2
union all
select convert(varchar(100), col1) + convert(varchar(100), col2) +
convert(varchar(100), col3) + convert(varchar(100), col4) as fileOutput
from table4
请注意,您不知道您的列数据类型,您的varchar(100)可能需要展开,或者可能会缩小,具体取决于您的数据。
答案 1 :(得分:1)
您可以使用+
组合它们(可能需要cast
int
s varchar
s才能使其正常工作),然后将它们全部放在一个表中union all
。例如:
Select cast(col1 as varchar(100)) + col2 + col3
from Table1
union all
select cast(col1 as varchar(100)) + col2
from Table2
等
注意:如果您想保留可能创建的任何重复项,请务必使用union all
而不是union
。
答案 2 :(得分:1)
您希望Google使用的字词为:UNION
和CONCAT
。
注意:SQL Server 2012的早期版本不支持CONCAT。
为了获得预期的输出,我会这样做:
select
concat(cast(col1 as varchar(10)),col2,col3) as FileOutput
from table1
UNION
select
concat(cast(col1 as varchar(10)),col2) as FileOutput
from table2
UNION
select
concat(cast(col1 as varchar(10)),cast(col2 as varchar(10)),col3,col4) as FileOutput
from table3