码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PIVOT函数-动态列


    一、需求说明

    原始表:

    select * from pathogen_pro;

    将pm_name的值转成对应的列,效果如下

    二、PIVOT函数说明

    PIVOT(<聚合函数>([聚合列值]) FOR [行转列前的列名] IN([行转列后的列名1],[行转列后的列名2],[行转列后的列名3],.......[行转列后的列名N]));

    2-1、pivot固定列

    1. select * from
    2. (
    3. select * from pathogen_pro where pathogen_name_en is not null
    4. --and pathogen_type1 = '病毒'
    5. ) as a
    6. PIVOT (
    7. max(is_pm)
    8. FOR pm_name IN ([臻达全+臻熙], [Dano-Seq多重病原体检测3.0+迪谱],[Dano-Seq多重病原体检测2.0+迪谱], [臻达敏+臻熙], [臻达准+臻熙]) -- 这里列出了所有可能的季度值
    9. ) AS PivotTable;

    2-2、pivot动态列

    1、获取动态的列的值的字符串

    1. DECLARE @cols AS NVARCHAR(MAX)
    2. SELECT @cols =
    3. COALESCE(@cols + ',', '') + QUOTENAME(pm_name)
    4. FROM
    5. (SELECT pm_name FROM pathogen_pro) AS SubQuery
    6. PRINT @cols

    2、获取结果

    1. DECLARE @cols AS NVARCHAR(MAX),
    2. @query AS NVARCHAR(MAX);
    3. -- Step 1: 获取要转换为列的值的列表(即 Quarter 的唯一值)
    4. SELECT @cols =
    5. COALESCE(@cols + ',', '') + QUOTENAME(pm_name)
    6. FROM
    7. (SELECT pm_name FROM pathogen_pro) AS SubQuery
    8. -- Step 2: 构建包含 PIVOT 查询的 SQL 字符串
    9. SET @query =
    10. 'SELECT *
    11. FROM
    12. (
    13. SELECT *
    14. FROM pathogen_pro where pathogen_name_en is not null
    15. ) x
    16. PIVOT
    17. (
    18. max(is_pm)
    19. FOR pm_name IN (' + @cols + N')
    20. ) p ';
    21. -- 执行查询
    22. --EXEC sp_executesql @query;
    23. print @query
    24. --执行
    25. exec(@query)
  • 相关阅读:
    聊一聊 Valgrind 监视非托管内存泄露和崩溃
    小程序为什么必须使用SSL证书?
    学生HTML个人网页作业作品:基于web在线汽车网站的设计与实现 (宝马轿车介绍)
    论文解读(CDCL)《Cross-domain Contrastive Learning for Unsupervised Domain Adaptation》
    react router v6实现useHistory与自定义history设计思路
    CUDA学习笔记(七)Kernel性能调节
    有关范数的学习笔记
    简化javabean开发-->Lombok
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园生活互助平台06qe4
    Mysql数据库
  • 原文地址:https://blog.csdn.net/qq_31532983/article/details/139450345
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号