sql语句中的 行转列 查询

有时候多行数据需要一行显示,  这就需要行转列的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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值