本文目录一览:
- 1、SQL使数据两行变一行怎么写?
- 2、怎么样将sql查询出来的多行数据变成一行多
- 3、SQL多行合并为一行,SQL语句如何写
- 4、SQL 多行多列数据清洗合并为一行
- 5、sql中怎样把同一张表上的两行记录合并在一行上展示
SQL使数据两行变一行怎么写?
不需要使用lead函数,用子查询就可以实现了
select s.id,
s.time,
(select max(time)
from table
where id = s.id
and status = 1
and name = s.name),
s.name
from table s
where status = 0
怎么样将sql查询出来的多行数据变成一行多
怎么样将sql查询出来的多行数据变成一行多
sql查询结果如果只有一条,就会显示一行,行数代表了结果数,列数的多少取决于你所查询的字段数。
SQL多行合并为一行,SQL语句如何写
最简捷直观的方法就是利用分组
select ID,
Sum(语文) 语文,
Sum(数学) 数学,
Sum(英语) 英语
from scores
group by ID
你可以直接用下面的语句在SQL Server中测试结果:
DECLARE @ScoresVar table(
ID int NOT NULL,
Chinese int,
Math int,
English int);
Insert into @ScoresVar
values(1 ,70, null, null)
Insert into @ScoresVar
values(1 ,null,80, null)
Insert into @ScoresVar
values(1 ,null, null, 90)
Insert into @ScoresVar
values(2 ,75, null, null)
Insert into @ScoresVar
values(2 ,null,85, null)
Insert into @ScoresVar
values(2 ,null, null, 95)
select ID,
SUM(Chinese) Chinese,
Sum(Math) Math,
Sum(English) English
from @ScoresVar
group by ID
还有一种方法,可能更通用一点,利用 FOR XML PATH 和STUFF函数来做,虽然复杂,但是对表的数据类型无限制。
还是上面的测试数据,你可以通过下面的代码来得到你想要的数据:
SELECT ID,
STUFF((SELECT ',' + Cast(A.Chinese as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As Chinese,
STUFF((SELECT ',' + Cast(A.Math as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As Math,
STUFF((SELECT ',' + Cast(A.English as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As English
From @ScoresVar B
Group By ID
-- 输出结果
ID Chinese Math English
1 70 80 90
2 75 85 95
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 语句来进行分组管理,不然所有的数据都会被合并成一条记录
参考链接
sql中怎样把同一张表上的两行记录合并在一行上展示
如果只有2条记录可以用ORDER BY 分别取出两条记录,然后用LEFT JOIN 或者 "="可行