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

  • 相关阅读:
    poj 1191(棋盘分割)
    poj 1184(聪明的打字员)
    HDU 3593(The most powerful force)
    poj 2449(Remmarguts' Date)
    poj 1837(blance)
    poj 1742(Coins)
    poj 3280(Cheapest Palindrome)
    poj 1077(八数码)
    数组排序1.和求最大值
    当textindent与float相遇
  • 原文地址:https://www.cnblogs.com/since-1995/p/12673109.html
Copyright © 2011-2022 走看看