sql语句中的 行转列 查询

数据库行转列 专栏收录该内容
0 篇文章 0 订阅

有时候多行数据需要一行显示,  这就需要行转列的sql啦.   

首先  ,要知道 行转列当然是要以某个字段进行分组的,然后再根据表中  一个字段的值做转列后的字段名,  这个值所对应的另一个字段作为  值   

示例:

表名: XX班

班级学生身高
一班161
一班162
一班163
一班164
一班165

 

假如:要将上表进行转列 转换结果如下表:

 

班级
一班161162163164165

以班级进行分组,   以学生 作为字段名,以身高为每个学生字段的额值.

 

SELECT  班级

SUM(CASE WHEN 学生 = 甲  TNEN 身高  ELSE  0  END) 甲,

SUM(CASE WHEN 学生 = 乙  TNEN 身高  ELSE  0  END)乙 ,

SUM(CASE WHEN 学生 = 丙  TNEN 身高  ELSE  0  END)丙 ,

SUM(CASE WHEN 学生 = 丁  TNEN 身高  ELSE  0  END)丁 ,

SUM(CASE WHEN 学生 = 戊 TNEN 身高  ELSE  0  END) 戊 

FROM XX班   GROUP BY 班级

第二种sql语句, 感觉更好一点  ,

SELECT
    *
FROM
(SELECT 班级,学生,身高 from  XX班 )

PIVOT (
        SUM (身高) FOR 学生 IN (
            '甲'甲,
           '乙'乙,
            '丙'丙
        )
    )

括号中的sql 是查询出 分组字段,   按照 班级分组, 学生和升高是需要行转列的

pivot后面的内容中  ,  身高 字段 将作为行转列后的值,   学生字段,将作为行转列后的字段名,

'甲'甲    单引号中 甲 是为了获取对应行的值 ,  后面的甲 是该值的字段名 

 

 

 

 

  • 3
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值