zoukankan      html  css  js  c++  java
  • 如何理解行转列(SQL)

    对于老手来说,行转列已不稀奇。但对于新手来说,对行转列的思维方式还很模糊。

    今天我要总结一下我所掌握的行转列的思维方式,以帮助有需要的朋友更清楚的理解行转列的方法。

    行转列的理解方式:

    行转列前,所有列的筛选条件都一样,只是被分组了。

    行转列后,每一列各有自己的筛选条件,筛选条件就是行转列前所分组的值。

    示例:

    源数据:

    SELECT user_name,dept_no FROM trm_user

     

    要求统计每个部门下的人数:

    SELECT

    dept_no,count(1) AS 'count'

    FROM trm_user

    GROUP BY dept_no

     

    行转列要求部门在第一行,第二行显示人数:

    SELECT 'ATD','MACAU','AIAPT'

    UNION all

    select

    convert(VARCHAR,count(CASE WHEN dept_no='ATD' THEN 1 END)),

    convert(VARCHAR,count(CASE WHEN dept_no='MACAU' THEN 1 END)),

    convert(VARCHAR,count(CASE WHEN dept_no='AIAPT' THEN 1 END))

    FROM trm_user

     

     对比:

     

    总结:

    行转列即是把行转列前的分行条件,分别作为行转列后的各列的筛选条件。

    扩展:

    易理解的写法:

    SELECT 'ATD','MACAU','AIAPT'

    UNION all

    SELECT

    convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='ATD')),

    convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='MACAU')),

    convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='AIAPT'))

     

  • 相关阅读:
    Hacking Tools
    SDN 网络系统之 Mininet 与 API 详解
    Rust安装配置
    研华 FWA-3231 单路E3平台
    Netscaler Configuration Architecture
    TCP拥塞控制算法纵横谈-Illinois和YeAH
    TCP协议疑难杂症全景解析
    Windows WMIC命令使用详解(附实例)
    Windows一个文件夹下面最多可以放多少文件
    喝酒游戏,概率分布和卷积
  • 原文地址:https://www.cnblogs.com/bluelight4587/p/5798499.html
Copyright © 2011-2022 走看看