zoukankan      html  css  js  c++  java
  • SQL Server将查询出数据进行列转行操作

    在日常的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

  • 相关阅读:
    css3系列之@font-face
    css3系列之text-shadow 浮雕效果,镂空效果,荧光效果,遮罩效果
    css3系列之linear-gradient() repeating-linear-gradient() 和 radial-gradient() repeating-radial-gradient()
    css3系列之详解background
    css3系列之详解border-image
    css3系列之详解box-shadow
    css3系列之详解border-radius
    promise与async和await的区别
    JavaScript 里的闭包是什么?应用场景有哪些?
    ES6箭头函数中的this绑定问题
  • 原文地址:https://www.cnblogs.com/since-1995/p/12673109.html
Copyright © 2011-2022 走看看