sql合并多行
㈠ sql按照条件多行合并问题
create
table
##b
as
(select
ID1,ID2,ID3,sum(Number)
from
表
group
by
ID1,ID2,ID3)
//把记录合并后哗改放到临时表##b
Delete
from
表
//删除表原记录
create
table
表
as
(select
ID1,ID2,ID3,Number
from
##b)
//把合并后的记录写回表
回楼主咐派:
删除重复记录只保留一条:
Delete
表
Where
ID
Not
In
(Select
Max(ID)
From
表
Group
By
name)
只衡芦贺查询不重复记录,不做删除:
SELECT
distinct(name)
as
name
From
表
㈡ 如何把SQL Server多行查询结果合并在一行中
如果你要取的值是AdminName, 表应该还有一个标识来做复合组键, 就是最最终想要结果戚伏卖的col title(admin1, admin2).
假如结构厅瞎如下高逗:
㈢ SQL 多行多列数据清洗合并为一行
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语句将多行合并成一行
select id ,time,sum(2),sum(3),sum(4)... from 表
group by id,time
order time
如果腔销拍time 不是字符类斗则型分伍羡组分的不对可以直接转成字符类型到天再用
㈤ SQL多行合并为一行,SQL语句如何写
最简捷直观的方法就是利用分组
selectID,
Sum(语文)语文,
Sum(数学)数学,
Sum(英语)英语
fromscores
groupbyID
你可以直接用下面的语句在SQL Server中测试结果:
DECLARE@ScoresVartable(
IDintNOTNULL,
Chineseint,
Mathint,
Englishint);
Insertinto@ScoresVar
values(1,70,null,null)
Insertinto@ScoresVar
values(1,null,80,null)
Insertinto@ScoresVar
values(1,null,null,90)
Insertinto@ScoresVar
values(2,75,null,null)
Insertinto@ScoresVar
values(2,null,85,null)
Insertinto@ScoresVar
values(2,null,null,95)
selectID,
SUM(Chinese)Chinese,
Sum(Math)Math,
Sum(English)English
from@ScoresVar
groupbyID
还有一种方法,可能更通用一点,利用 FOR XML PATH 和STUFF函数来做,虽然复杂,但是对表的数据类型无限制。
还是上面的测试数据,你可以通过下面的代码来得到你想要的数据:
SELECTID,
STUFF((SELECT','+Cast(A.Chineseasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsChinese,
STUFF((SELECT','+Cast(A.Mathasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsMath,
STUFF((SELECT','+Cast(A.Englishasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsEnglish
From@ScoresVarB
GroupByID
--输出结果
IDChineseMathEnglish
1708090
2758595
㈥ SQL 将属于同一个ID下的多行数据合并到一行
mssql下
createTable#myfal(IDint,data1varchar(20),data2varchar(20))
insertinto#myfalvalues(1,1,'仔族辩')
insertinto#myfalvalues(1,1.1,'')
insertinto#myfalvalues(1,'',0.3)
insertinto#myfalvalues(2,1,'')
insertinto#myfalvalues(2,'',1.2)
select*from#myfal
selectID,SUM(casewhendata1=''then穗悄0elseConvert(float,data1)end)data1,
SUM(casewhendata2=''then0elseConvert(float,data2)end)data2from#myfal
group念缺byid
droptable#myfal
㈦ sql语句多行合并为一行
用多个字段分组就行,SQL如下
SELECTA,B,C,SUM(D)FROMTABLEGROUPBYC,A,B
㈧ SQL 多行数据合并成一行
group by 前面相同的字段,后面不同的,用max取。
SELECT m.member_id,
prefix_desc 'Prefix:',
UPPER(first_name) 'First Name:',
UPPER(last_name) 'Last Name:',
UPPER(email) 'Email:',
LOWER(user_id) 'User ID:',
REPLICATE('*',LEN(password)) 'Password:',
('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',
REPLACE(email_ind,'Y','Accept') 'Email notification:',
REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN',
max(CASE WHEN tel_type= 'B' THEN tel_number END + ' '+REPLACE(pref_phone_ind,'P','PREF')) 'Business Phone',
max('('+ p.country_code + ')'喊顷+ CASE WHEN tel_type= 'M' THEN tel_number END) 'Mobile Number',
max(CASE WHEN tel_type= 'F' THEN tel_number END) '闷凳Fax'
FROM MEMBER m, license l, phone_fax p
WHERE m.member_id = l.member_id
AND m.member_id = p.member_id
AND m.member_id = 'A000001'
group by
m.member_id,
prefix_desc 'Prefix:',
UPPER(first_name) 'First Name:',
UPPER(last_name) 'Last Name:'蚂渗旅,
UPPER(email) 'Email:',
LOWER(user_id) 'User ID:',
REPLICATE('*',LEN(password)) 'Password:',
('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',
REPLACE(email_ind,'Y','Accept') 'Email notification:',
REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN'