sql如何实现吧多条记录合成一条

 时间:2026-02-14 15:06:12

1、打开SSMS并登录数据库,点击新建查询按钮新建一个查询窗口。下面将用一个三国武将的属性表为例演示如何将多行数据合并成一行。

sql如何实现吧多条记录合成一条

2、创建一个名为WScore的表,用于保存武将的三围数据。执行以下语句:

CREATE TABLE WScore 

(

WName VARCHAR(20),     --姓名

Subject VARCHAR(20),  --属性

Score INT             --属性值   

);

sql如何实现吧多条记录合成一条

3、接着往WScore表插入一些武将的数据。执行以下语句:

INSERT INTO WScore  VALUES('姜维','统率',90);

INSERT INTO WScore  VALUES('姜维','武力',88);

INSERT INTO WScore  VALUES('姜维','智力',91);

INSERT INTO WScore  VALUES('张郃','统率',91);

INSERT INTO WScore  VALUES('张郃','武力',89);

INSERT INTO WScore  VALUES('张郃','智力',69);

INSERT INTO WScore  VALUES('陆逊','统率',96);

INSERT INTO WScore  VALUES('陆逊','武力',69);

INSERT INTO WScore  VALUES('陆逊','智力',95);

sql如何实现吧多条记录合成一条

4、执行语句:select * from WScore 查看刚才插入的数据,可以看到武将的三围数据是按属性以多行的形式保存的,接下来要合并成每名武将将一行的形式。

sql如何实现吧多条记录合成一条

5、可以使用 Case when + group by 的组合来实现多行数据合并,执行以下语句按姓名汇总,可以看到每名武将都合并到一行数据里了。

SELECT WName AS '姓名',

MAX(CASE Subject WHEN '统率' THEN Score ELSE 0 END) AS '统率',

MAX(CASE Subject WHEN '武力' THEN Score ELSE 0 END) AS '武力',

MAX(CASE Subject WHEN '智力' THEN Score ELSE 0 END) AS '智力'

FROM WScore 

GROUP BY WName

sql如何实现吧多条记录合成一条

6、另外使用PIVOT方法也能实现多行合并的效果,执行如下语句,可以看到查询结果语句上步一样:

SELECT A.WName AS '姓名',a.统率,a.武力,a.智力

FROM WScore

PIVOT(MAX(Score) FOR Subject IN(统率,武力,智力)) AS A

sql如何实现吧多条记录合成一条

  • c#编程打印QR值可变的lable,BarTender组件教程
  • 怎么查看java虚拟机内存占用?
  • db2时间类型与字符串类型转换
  • 如何使用plsql创建DBLINK
  • XP系统如何查看445端口是否关闭
  • 热门搜索
    台湾旅游胜地 旅游鞋女 许昌旅游景点大全 钦州旅游景点大全 东莞旅游团 旅游拍照姿势的摆法 郴州东江湖旅游攻略 南京旅游攻略一日游 天津周边旅游景点 旅游百事通旅行社