在日常的SQL Server数据查询时经常会遇到需要将数据列转换成行的操作,现将自己学习的列转行SQL语句举例如下:

--首先查询语句

SELCT * FROM  YXBAK..TBYJKSTEMP

--列转行的两种方法

--列转行第一种方法,使用CASE ... WHEN ... THEN ... ELSE ... END
SELECT 开单科室,
SUM(CASE 执行科室 WHEN '检验科' THEN 数量 ELSE 0 END) AS '检验科',
SUM(CASE 执行科室 WHEN '超声科' THEN 数量 ELSE 0 END) AS '超声科',
SUM(CASE 执行科室 WHEN '放射科' THEN 数量 ELSE 0 END) AS '放射科',
SUM(CASE 执行科室 WHEN 'CT室' THEN 数量 ELSE 0 END) AS 'CT室',
SUM(CASE 执行科室 WHEN 'MRI室' THEN 数量 ELSE 0 END) AS 'MRI室',
SUM(CASE 执行科室 WHEN '内镜诊疗中心' THEN 数量 ELSE 0 END) AS '内镜诊疗中心',
SUM(CASE 执行科室 WHEN '病理科' THEN 数量 ELSE 0 END) AS '病理科',
SUM(CASE 执行科室 WHEN '心肺功能科' THEN 数量 ELSE 0 END) AS '心肺功能科',
SUM(CASE 执行科室 WHEN '神经电生理检查室' THEN 数量 ELSE 0 END) AS '神经电生理检查室',
SUM(CASE 执行科室 WHEN '健康管理中心超声科' THEN 数量 ELSE 0 END) AS '健康管理中心超声科',
SUM(CASE 执行科室 WHEN '健康管理中心影像科' THEN 数量 ELSE 0 END) AS '健康管理中心影像科'
FROM YXBAK..TBYJKSTEMP GROUP BY 开单科室 ORDER BY 开单科室

--列转行第二种方法使用pivot
--pivot透视
select * from
(select 开单科室,执行科室,数量 from YXBAK..TBYJKSTEMP) as a
pivot (sum(数量)
for 执行科室
IN ([检验科],[超声科],[放射科],[CT室],[MRI室],[内镜诊疗中心],[病理科],[心肺功能科],[神经电生理检查室],[健康管理中心超声科],[健康管理中心影像科]
)) as b ORDER BY 开单科室 asc

SQL Server将查询出数据进行列转行操作的更多相关文章

  1. sql server 如何查询出数据库作业所有者的信息并完成批量替换

    今天数据库对入职一年的我建立了独立的数据库账号,之前我是和其他同事共享的,之前的所有者账号被废弃了,这时导致很多数据库作业执行失败. 下面是说明如何把之前所有的作业的所有者替换成正在使用的账号: 下面 ...

  2. SQL SERVER 和ACCESS的数据导入导出

            //批量导入Access         string filepath = Server.MapPath("student.mdb");         stri ...

  3. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  4. SQL Server中Table字典数据的查询SQL示例代码

    SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...

  5. Sql Server中查询今天、昨天、本周、上周、本月、上月数据

    Sql Server中查询今天.昨天.本周.上周.本月.上月数据 在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及 ...

  6. 【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件, 需要用不同的驱动程序来实现. 在64位的机 ...

  7. 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...

  8. sql语句中查询出的数据添加一列,并且添加默认值

    查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 ...

  9. 恢复SQL Server被误删除的数据

    恢复SQL Server被误删除的数据 <恢复SQL Server被误删除的数据(再扩展)> 地址:http://www.cnblogs.com/lyhabc/p/4620764.html ...

随机推荐

  1. spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)

    一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...

  2. flink 处理实时数据的三重保障

    flink 处理实时数据的三重保障 window+watermark 来处理乱序数据对于 TumblingEventTimeWindows window 的元数据startTime,endTime 和 ...

  3. Qt中的Q_OBJECT作用, 以及信号槽

    自定义类时, 如果需要使用Qt框架提供的信号槽机制, 必须满足以下两个条件: 第一:该类必须是QObject类的子类或者间接子类. 其次:在定义类时, 首行必须加上宏Q_OBJECT class My ...

  4. java基础第一章

    有一定的基础,但是还是要重新开始,2020.10.6 1.手写Hello World public class HelloWorld{ public static void main(String[] ...

  5. ssm整合之applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  6. 5. Bean Validation声明式验证四大级别:字段、属性、容器元素、类

    1024,代码改变世界.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...

  7. android自带下拉刷新SwipeRefreshLayout

    也是一个布局容器,只有一个子组件,类似scrollView <?xml version="1.0" encoding="utf-8"?> <a ...

  8. 脑桥Brain-Pons

    date: 2014-02-01 15:30:11 updated: 2014-02-01 15:30:11 [一] "2025.7.3.Brain-Pons?Expeiment?Under ...

  9. java数据结构-05双向链表

    一.双向链式存储: ①简述:要是节点中包含两个指针部分,一个指向前驱元,一个指向后继元,Java中LinkedList集合类的实现就是双向链表 (以下图片为网络收集,侵删) ②特点:数据是非连续的,链 ...

  10. SQL Server 列存储索引概述

    第一次接触ColumnStore是在2017年,数据库环境是SQL Server 2012,Microsoft开始在SQL Server 2012中推广列存储索引,到现在的SQL Server 201 ...