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

 时间:2024-10-31 12:18:22

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 WScoreGROUP BY WName

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

6、另外使用PIVOT方法也能实现多行合并的效果,执行如下语句,可以看到查询结果语句上步一样:SELECT A.WName AS '姓名',a.统率,a.武力,a.智力FROM WScorePIVOT(MAX(Score) FOR Subject IN(统率,武力,智力)) AS A

sql如何实现吧多条记录合成一条
  • c#编程打印QR值可变的lable,BarTender组件教程
  • 怎么查看java虚拟机内存占用?
  • db2时间类型与字符串类型转换
  • 如何使用plsql创建DBLINK
  • XP系统如何查看445端口是否关闭
  • 热门搜索
    新学期新气象手抄报内容 爱我中华手抄报内容 小学生疫情手抄报 疫情手抄报内容怎么写 小学生英语手抄报 做一个有道德的人手抄报 3.8妇女节手抄报 关于名人的手抄报 手抄报资料 手抄报国庆节