-
2.使用case语句进行行列转换<br> select sum(case when user_name='孙悟空' then kills end) as '孙悟空',<br> sum(case when user_name='猪八戒' then kills end) as '猪八戒',<br> sum(case when user_name='沙僧' then kills end) as '沙僧'<br> from user1 a join user_kills b on a.id=b.user_id; ----------------------------------------------- 使用CASE语句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL END) AS 'B', SUM(CASE USERNAME='C' THEN KILL END) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USERNAME; 通过CASE给满足WHEN语句的数据返回SUM聚合函数要统计的数据,再将SUM进行重命名。推荐。 一般形式 SELECT NAME AS '姓名', SUM(CASE SUBJECT WHEN '数学' THEN MARK ELSE NULL END) AS '数学', SUM(CASE SUBJECT WHEN '英语' THEN MARK ELSE NULL END) AS '英语', SUM(CASE SUBJECT WHEN '语文' THEN MARK ELSE NULL END) AS '语文' FROM SUBJECT GROUP BY NAME; CASE语句中放原来表中要进行转换的字段(如学科),对其进行分类(如数学、英语、语文)。 注意:要用聚合函数,最后要GROUP BY。查看全部
-
行转列: 利用自身连接来实现: SELECT * FROM ( SELECT SUM(KILLS) AS 'A' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='A') AS A CROSS JOIN( SELECT SUM(KILLS) AS 'B' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='B') AS B CROSS JOIN( SELECT SUM(KILLS) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='C')AS C; 比如成绩 1、分别查询出不同同学的成绩,并将字段名改为同学的名字 2、通过交叉连接,将不同的语句连接起来 缺点:是将原来查询的结果每一行单独查询出来,再进行拼接。因此每增加一个同学就增加一个SELECT语句。并且是通过交叉连接,要保证每个查询的结果只能是一个,不然没办法通过交叉连接实现转换。查看全部
-
行列转换查看全部
-
行列转换查看全部
-
SQL开发技巧(二) 如何进行行列转换 需要进行行转列的场景:报表统计、汇总显示查看全部
-
SQL开发技巧(二) 内容介绍: 1.如何进行行列转换 2.如何生成唯一序列号 3.如何删除重复数据查看全部
-
行列转换查看全部
-
查找重复数据查看全部
-
生产唯一序列号sql 存储过程查看全部
-
刪除重複數據查看全部
-
每秒生成1000筆序列號查看全部
-
Union 列轉行查看全部
-
序列 列轉行查看全部
-
行列轉換查看全部
-
case when then end 使用方式查看全部
举报
0/150
提交
取消