【Sql Server】进阶之行数据转为列显示

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 在开发系统维护阶段,经常需要进行各种数据统计,各种报表之类的。这个时候,行数据转数据显示就发挥作用了。场景:行数据的某列值想作为字段列显示


作者:小5聊基础

简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑

编程原则:Write Less Do More

1、效果如下

1673792785486.jpg

image.gif

2、解决方案

使用pivot进行行转列,以及结合分组

1)什么是pivot

PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句,以前旧版本实现起来比较麻烦,随着版本的升级逐渐出现了一些比较实用的方式

实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

2)聚合函数配合使用

3、代码如下

从代码可看到,列标题,必须是已知需要显示的标题

select * from(
    select DeptName,InputCode
    from FWD_Department
    group by DeptName,InputCode
) as a
pivot(
  max(InputCode) for DeptName in([随访中心],[全院],[家庭化产房],[妇科二],妇科一)
) piv

image.gif

    • 创建表

    表创建三个字段,自增编号、名称、以及编码

    CREATE TABLE [dbo].[FWD_Department](
      [id] [int] IDENTITY(1,1) NOT NULL,
      [DeptName] [varchar](50) NOT NULL,
      [InputCode] [nchar](10) NULL,
     CONSTRAINT [PK_one] PRIMARY KEY CLUSTERED 
    (
      [DeptName] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    image.gif

      • 表记录添加

      下面添加记录的方式,就是简单的一条一条的添加

      insert into one(DeptName,InputCode)
      values('随访中心','SFZX')
      insert into one(DeptName,InputCode)
      values('全院','QY')
      insert into one(DeptName,InputCode)
      values('家庭化产房','JTHCF')
      insert into one(DeptName,InputCode)
      values('妇科二','FKE')
      insert into one(DeptName,InputCode)
      values('妇科一','FKY')

      image.gif

        • 改进记录添加方式
        insert into FWD_Department(DeptName,InputCode)
        values('随访中心','SFZX'),
        ('全院','QY'),
        ('家庭化产房','JTHCF'),
        ('妇科二','FKE'),
        ('妇科一','FKY')

        image.gif

        4、常见的聚合函数

        编号 函数 描述说明
        1

        AVG 

        计算平均值
        2

        MIN 

        计算最小值
        3

        MAX

        计算最大值
        4

        SUM

        计算总和值
        5

        COUNT

        统计记录条数
        6

        STDEV 

        计算标准偏差值
        7

        VAR

        计算方差
        8 CHECKSUM_AGG 返回集合中值的校验和
        相关实践学习
        使用SQL语句管理索引
        本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
        SQL Server on Linux入门教程
        SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
        相关文章
        |
        12天前
        |
        SQL 存储 Oracle
        Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
        【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
        |
        20天前
        |
        SQL 算法 数据库
        【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
        【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
        91 6
        |
        1天前
        |
        SQL 机器学习/深度学习 数据采集
        数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
        数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
        |
        1天前
        |
        SQL Oracle 关系型数据库
        利用 SQL 注入提取数据方法总结
        利用 SQL 注入提取数据方法总结
        |
        3天前
        |
        SQL 机器学习/深度学习 算法
        SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
        SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
        18 2
        |
        3天前
        |
        SQL 机器学习/深度学习 数据挖掘
        SQL Server Analysis Services数据挖掘聚类分析职业、地区、餐饮消费水平数据
        SQL Server Analysis Services数据挖掘聚类分析职业、地区、餐饮消费水平数据
        |
        7天前
        |
        SQL 数据管理 关系型数据库
        如何在 Windows 上安装 SQL Server,保姆级教程来了!
        在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
        10 0
        |
        12天前
        |
        SQL Oracle 关系型数据库
        Oracle的PL/SQL游标自定义异常:数据探险家的“专属警示灯”
        【4月更文挑战第19天】Oracle PL/SQL中的游标自定义异常是处理数据异常的有效工具,犹如数据探险家的警示灯。通过声明异常名(如`LOW_SALARY_EXCEPTION`)并在满足特定条件(如薪资低于阈值)时使用`RAISE`抛出异常,能灵活应对复杂业务规则。示例代码展示了如何在游标操作中定义和捕获自定义异常,提升代码可读性和维护性,确保在面对数据挑战时能及时响应。掌握自定义异常,让数据管理更从容。