sql能将两列数据合为一列数据

时间:2022-06-27 10:31:58
下列数据用SQL语句, select m3,m4 from table是可操作的。
m3 m4
416.61467 431.12093
960.02511 614.21426
416.61467 431.12093
320.71871 859.04836
请问各位大侠,能将m3,m4合成一个mm
select mm(m3和m4合并项) from table
谢谢

7 个解决方案

#1


要求不是简单的写成
select m3 & m4 from table
其结果是
416.61467614.21426
960.02511810.08154
416.61467859.04836
320.71871810.08154

要求是原来的4条记录变成8条记录如
416.61467
960.02511
416.61467
320.71871
431.12093
614.21426
431.12093
859.04836
我试了半天不成立。

#2


这是SQL的基础了,呵呵!
解决方式如下:
1、如果两个数值型字段放置在一起的时候,两个数值之间不需要相加处理:
   Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table 
2、如果两个数值型字段放置在一起的时候,两个数值之间需要相加处理:
   Select (M3+M4) as MM from table 

#3


把你的详细要求罗列出来吧,不明确的需求,是无法给你答案的。

#4


select m3 as mm from table
union all 
select m4 from table

--如果要过滤掉重复的
select m3 as mm from table
union
select m4 from table

#5


我在CSDN中看到过别这么用过,好像是SQL Server中写的
Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table
在VB和VBA中(MSDN的帮助文件)没有找到 
Convert 和varchart这种函数
因此,Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table运行出错。谢谢2楼的思想,会想方法解法的。

#6


引用 4 楼 sdfkfkd 的回复:
select m3 as mm from table 
union all 
select m4 from table 

--如果要过滤掉重复的 
select m3 as mm from table 
union 
select m4 from table 

谢谢,按此方法,程序调试成功.

Function RecordsetToExcel(InputFileName As String)

  Set conn = CreateObject("ADODB.Connection")
  Set rs = CreateObject("adodb.recordset")
  conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\", "", ""
  rs.Open " " & InputFileName, conn, 1, 3
  Sheet1.Range("A2").CopyFromRecordset rs

End Function

Sub m()
  abc = "select  "
  
  abc = abc & " m3 as mm from mmmm.txt "
  abc = abc & " union all "
  abc = abc & " select m4 from mmmm.txt "
  Debug.Print abc
  RecordsetToExcel (abc)

End Sub

#7


select * into #temp from table
alter #temp add mm varchar(20) 'm3\m4定义的类型
update #temp set mm=conver(numeric(18,8),m3)+conver(numeric(18,8),m4) 
selecet mm from #temp
drop table #temp

#1


要求不是简单的写成
select m3 & m4 from table
其结果是
416.61467614.21426
960.02511810.08154
416.61467859.04836
320.71871810.08154

要求是原来的4条记录变成8条记录如
416.61467
960.02511
416.61467
320.71871
431.12093
614.21426
431.12093
859.04836
我试了半天不成立。

#2


这是SQL的基础了,呵呵!
解决方式如下:
1、如果两个数值型字段放置在一起的时候,两个数值之间不需要相加处理:
   Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table 
2、如果两个数值型字段放置在一起的时候,两个数值之间需要相加处理:
   Select (M3+M4) as MM from table 

#3


把你的详细要求罗列出来吧,不明确的需求,是无法给你答案的。

#4


select m3 as mm from table
union all 
select m4 from table

--如果要过滤掉重复的
select m3 as mm from table
union
select m4 from table

#5


我在CSDN中看到过别这么用过,好像是SQL Server中写的
Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table
在VB和VBA中(MSDN的帮助文件)没有找到 
Convert 和varchart这种函数
因此,Select (Convert(Varchar(10),M3)+Convert(Varchar(10),M4)) as MM from table运行出错。谢谢2楼的思想,会想方法解法的。

#6


引用 4 楼 sdfkfkd 的回复:
select m3 as mm from table 
union all 
select m4 from table 

--如果要过滤掉重复的 
select m3 as mm from table 
union 
select m4 from table 

谢谢,按此方法,程序调试成功.

Function RecordsetToExcel(InputFileName As String)

  Set conn = CreateObject("ADODB.Connection")
  Set rs = CreateObject("adodb.recordset")
  conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\", "", ""
  rs.Open " " & InputFileName, conn, 1, 3
  Sheet1.Range("A2").CopyFromRecordset rs

End Function

Sub m()
  abc = "select  "
  
  abc = abc & " m3 as mm from mmmm.txt "
  abc = abc & " union all "
  abc = abc & " select m4 from mmmm.txt "
  Debug.Print abc
  RecordsetToExcel (abc)

End Sub

#7


select * into #temp from table
alter #temp add mm varchar(20) 'm3\m4定义的类型
update #temp set mm=conver(numeric(18,8),m3)+conver(numeric(18,8),m4) 
selecet mm from #temp
drop table #temp