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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 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
        相关文章
        |
        13天前
        |
        SQL 存储 缓存
        SQL Server 数据太多如何优化
        11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
        |
        29天前
        |
        SQL 移动开发 Oracle
        SQL语句实现查询连续六天数据的方法与技巧
        在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
        |
        1月前
        |
        SQL 存储 关系型数据库
        添加数据到数据库的SQL语句详解与实践技巧
        在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
        |
        1月前
        |
        SQL 数据挖掘 数据库
        SQL查询每秒的数据:技巧、方法与性能优化
        id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
        |
        1月前
        |
        SQL 监控 数据处理
        SQL数据库数据修改操作详解
        数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
        187 4
        |
        1月前
        |
        SQL 关系型数据库 MySQL
        SQL批量插入测试数据的几种方法?
        SQL批量插入测试数据的几种方法?
        86 1
        |
        1月前
        |
        SQL 分布式计算 关系型数据库
        Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        82 0
        |
        1月前
        |
        SQL 分布式计算 关系型数据库
        Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        37 0
        |
        1月前
        |
        SQL 分布式计算 关系型数据库
        Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
        46 0
        |
        1月前
        |
        SQL
        使用SQL进行集合查询和数据维护
        使用SQL进行集合查询和数据维护
        36 0