SQL 将属于同一个ID下的多行数据合并到一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 将属于同一个ID下的多行数据合并到一行相关的知识,希望对你有一定的参考价值。

现在有一个表(表1),我希望能通过写SQL语句,实现表2操作,请问这个SQL语句应该怎么写呢?

参考技术A mssql下
create Table #myfal (ID int,data1 varchar(20),data2 varchar(20))
insert into #myfal values (1,1,'')
insert into #myfal values (1,1.1,'')
insert into #myfal values (1,'',0.3)
insert into #myfal values (2,1,'')
insert into #myfal values (2,'',1.2)
select * from #myfal 
select ID,SUM(case when data1 = '' then 0 else Convert(float,data1) end) data1 ,
SUM(case when data2 = '' then 0 else Convert(float,data2) end) data2 from #myfal 
group by id
drop table #myfal

参考技术B select id,sum(isnull(data1,0)) data1,sum(isnull(data2,0)) data2 from 表1 group by id

sqlserver写法,其他数据库略有不同

本回答被提问者采纳
参考技术C select distinct id ,sum(data1),sum(data2) from [table] group by id

SQL 多行多列数据清洗合并为一行

参考技术A SELECT  

            A,

            GROUP_CONCAT( B  SEPARATOR  ','  ),

            GROUP_CONCAT( C  SEPARATOR   ','  )

FROM

            table_name 

GROUP BY

            A

1.GROUP_CONCAT()中的值为你要合并的数据的字段名;

2.SEPARATOR 函数是用来分隔这些要合并的数据的 ,' ' 中是你要用哪个符号来分隔,可以直接不填符号默认为空值;

2.必须要用GROUP BY 语句来进行分组管理,不然所有的数据都会被合并成一条记录

参考链接

https://www.cnblogs.com/shoshana-kong/p/11147690.html

以上是关于SQL 将属于同一个ID下的多行数据合并到一行的主要内容,如果未能解决你的问题,请参考以下文章

SQL使用唯一键将多行合并为一行

SQL Query 根据 ID 将多行合并为一行,同时将其他值保留在同一行中?

求助,oracle多行数据合并成一行

求助,oracle多行数据合并成一行

如何将共享 id 的多行合并为一行(PYSPARK)

SQL多行合并为一行,SQL语句如何写