带统计的表的行列转换问题

锋利的SQL-SQL Server的表旋转(行列转换) 所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005开始提供的新技术。因此,如果希望使用此功能,需要将数据库的兼容级别设置为90。表旋转在某些方面也是解决了表的数据存储和实际需要之间的矛盾。 阅读详情
/*
问题:
源表:   
ID   操作一   操作二   地点   
1     张三       张三       1号地点   
2     张三       李四       1号地点   
3     李四       王五       2号地点   
4     张三       王五       1号地点   
5     王五       李四       2号地点   
6     李四       张三       1号地点   


需要得出下表:   
姓名   1号地点操作一数量   |1号地点操作二数量   |2号地点操作一数量   |2号地点操作二数量   
张三         3             2                   0                  0   
李四         1             1                   1                  1   
王五         0             1                   1                  1  
*/



/*
表结构:
CREATE TABLE [op] (
    [id] [char] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [op1] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [op2] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [addr] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO

插入数据:
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('1 ','张三      ','张三      ','1号地点   ')
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('2 ','张三      ','李四      ','1号地点   ')
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('3 ','李四      ','王五      ','2号地点   ')
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('4 ','张三      ','王五      ','1号地点   ')
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('5 ','王五      ','李四      ','2号地点   ')
INSERT INTO [op] ([id],[op1],[op2],[addr]) values ('6 ','李四      ','张三      ','1号地点   ')

*/


select     o.names as 姓名,
    
count(case when op1=o.names and addr='1号地点' then op.op1 end) as '1号地点操作一数量',
    
count(case when op2=o.names and addr='1号地点' then op.op2 end) as '1号地点操作二数量',
    
count(case when op1=o.names and addr='2号地点' then op.op1 end) as '2号地点操作一数量',
    
count(case when op2=o.names and addr='2号地点' then op.op2 end) as '2号地点操作二数量'
from
    (
select distinct op1 as names from    --这个语句是提取操作一与操作二里出现的全部人员并且没有重复
    (select distinct op1 from op where op1!=''
    
union all
    
select distinct op2  from op where op2!='') as w) as o,op
group by o.names


 
SQL 二维交叉报表 分类统计(行列转换) /*需要统计成以下形式             总    总分 数学   总分    语文       总分 李四    10    820    6    483.50    4        336.50 张三    10    829    7    595.50    3        233.50 ID Name   Class       Mark   Term1 张三   阅读详情

相关推荐

【大数据Hive】hive 行列转换使用详解

hive行列转换使用详解

congge_study的博客 8706

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法、子查询的应用、decode函数的用法。希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同性质的学生总数 3.一行数据转换成两列数据 union all 4.表行列数据转换(表转置) 1.创建数据库表及插入数据 创建数据库、创建学生表并设置...

weixin_34220963的博客 1241

AOSP14 Launcher3——手势上滑关键类AbsSwipeHandler解析

通过精密的事件监听、状态管理和对系统动画 API 及 Launcher 内部组件的协调,实现了复杂而流畅的手势导航体验。它的抽象设计允许子类(如。是 Quickstep (Launcher3 的手势导航实现) 中处理。的核心逻辑抽象基类。这个非常核心且复杂的类。)定制特定的回家动画逻辑。好的,我们来深入分析。

Micheal_Yang's Blog 1519

mysql查询结果两列_[数据库] SQL查询语句表行列转换及一行数据转换成两列

原文来自:http://blog.youkuaiyun.com/Eastmount/article/details/50559008本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法、子查询的应用、decode函数的用法。希望文章对你有所帮助~1.创建数据库表及插入数据2.子查询统计不同性质的学生总数3.一行数据转换成两列数据 union all4.表行列数据转换(表转...

weixin_42434656的博客 3347

新手必看!Cisco Packet Tracer 8.2从安装到完成第一个局域网实验(附常见问题解决)

本文为网络新手提供了Cisco Packet Tracer 8.2的完整入门指南。从官方下载安装、界面熟悉,到核心的拖拽设备、连线、配置IP地址三步操作,手把手教你完成第一个局域网组网实验。文章重点讲解了如何通过Ping命令验证连通性,并附带了连线错误、IP配置不当等常见问题的解决思路,帮助初学者快速上手这款强大的思科模拟器。

android的专栏 867

RDKit实战:5分钟搞定药物分子相似性分析(附Python代码)

本文提供了一套基于RDKit的快速药物分子相似性分析实战指南。通过Python代码演示,从环境搭建、分子指纹(如Morgan指纹)计算到Tanimoto相似性排序与可视化验证,帮助研究者在5分钟内完成从海量化合物库中精准筛选潜在活性分子的全流程,提升药物发现效率。

weixin_29193359的博客 314

用SQL行列转换实现数据透视的一些思考

用SQL行列转换实现数据透视的一些思考   摘  要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现。该解决思路及函数实现可用于Oracle数据库开发中行列转换、数据透视等查询统计的应用开发,可直接供前端报表展示工具调用,也可用于后端存储过程中调用。 关键词:行列转换;数据透视;查询统计;数据库开发;SQ

玄冰石的专栏 3417

MT6816磁编码器在无人机电调中的实战应用:从选型到调试全记录

本文详细介绍了MT6816磁编码器在无人机电调系统中的实战应用,涵盖选型、硬件集成、软件配置到飞行测试的全流程。通过对比霍尔传感器和光电编码器,突出MT6816在角度分辨率、安装公差和抗振动能力等方面的优势,为无人机动力系统提供高精度控制解决方案。

pandas7gardener的博客 234

sqlite实现行列转换

最近用sqlite做统计,要实现行列转换。 行是: 要达到的效果是: 使用的语句是: 行转成列: SELECT zldwdm,sum(mj) as total, sum(CASE WHEN dlbm='01' THEN mj ELSE 0 END) AS '01', sum(CASE WHEN dlbm='02' THEN mj ELSE 0 END) AS '02

liumengcheng的专栏 1万+

计算机组成原理(第三版)唐朔飞-第一章第二章-课后习题

计算机组成原理

weixin_45735391的博客 7万+

BVH2SMPL 实战笔记

BVH2SMPL 实战笔记

jacke121的专栏 843

mysql 行列转换

SELECT C.project_name,C.antibiotic_dict_name,C.`检出总数`, SUM(CASE C.`drugs_result` WHEN 'D' THEN C.`数量` ELSE 0 END ) AS '剂量依赖性敏感', CONCAT(SUM(CASE C.`drugs_result` WHEN 'D' THEN FORMAT(C.`数量`/C.`检出总数`*100,2) ELSE 0 END),'%') AS '剂量依赖性敏感比率', ...

一个混错圈儿的小测试 6547

告别繁琐!VS Code 下OpenClaw零配置上手秘籍

本文介绍了在VSCode环境下零配置上手OpenClaw开发工具的最佳实践。首先详细说明了VSCode和OpenClaw插件的安装步骤,包括获取安装包、配置环境变量等准备工作。然后重点讲解了核心配置流程:设置OpenClaw路径、调整工作区参数、添加自定义代码片段等优化开发体验的方法。通过创建测试项目验证配置有效性,并针对常见的路径错误、运行报错等问题提供了排查方案。本文旨在帮助开发者快速搭建高效的OpenClaw开发环境,充分发挥VSCode与OpenClaw的组合优势,提升开发效率。无论是新手还是资深开

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 528

横扫SQL面试——行列(行转列、列转行)转换问题

SQL行列转换问题

喻师傅的学习笔记 1074

AI驱动芯片设计的端到端验证:AI应用架构师的全流程指南

想象你要建造一座1000层的超级摩天大楼,每个房间都有独特的功能,管道、电路、电梯系统交织如迷宫。传统的检查方式是派1000个工程师逐层逐房手动检查,耗时十年且仍可能遗漏火灾隐患。这就是今天芯片设计面临的困境:7nm芯片含百亿晶体管,相当于百亿个"房间",传统验证方法(人工编写测试用例、随机仿真)已难以应对。本文的目的,是为AI应用架构师提供一份"AI驱动芯片验证导航图",范围涵盖从验证需求分析到芯片签核的全流程,包括AI模型如何融入传统验证工具链、数据如何驱动验证效率提升、以及端到端闭环系统的构建方法。

2501_92132293的博客 1241

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

oracle 行列转换 统计,Oracle 实现行列转换

Oracle 实现行列转换SQL> DESC TEST 测试表: Name Type Nullable Default Comments---- ------------ -------- ------- --------A NUMBER YB VAR...

weixin_39687189的博客 166

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python excel行列转置_Excel 行列转换的最简方法

原标题:Excel 行列转换的最简方法问题描述在工作中时常会遇到对 Excel 表格的处理。当编辑一张 Excel 表格时,发现表格的列数太多,而行数较少,为方便打印,这时你或许会希望将该表格行列转换;或许是为了做进一步做统计分析,当前格式不太方便,这时也会用到行列转换。下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,...

weixin_39922394的博客 5132

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)

前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用记录数录入一张表,一个月一个字段,所以表的字段是动态增长的,现在需要实时统计当前用户使用的总数量,如果你知道有多少个字段,那么可以用select c1+c2+c3+…. From tbname w...

csdn's blog 1万+

sql时间格式转换yyyymm_行列转换的魅力

本文主要是讲一下行列转换,也就是大家经常讲的交叉表查询。行列转换在实际的应用中非常的实用,可以大大的减少工作量。很多时候,在Excel中处理数据时,我们需要统计每个月的销量或者需要填写每个月的销量,如下图 :图中只输入了4个月,如果需要5月份的数据,那就要手工的添加“5月”这一列,如果需要6月份数据,那就要手工添加“6月”这一列,以此类推,月份还好也就12个月,那如果是按周呢?且不说表结构是否合理...

weixin_39709194的博客 1595

一个简单的SQL 行列转换

  一个简单的SQL 行列转换Author: eaglet    在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表    部门编号 部门名称  合计  正式员工 临时员工 辞退员工    1           A           30    20        10          1    这种问题咋

eaglet的专栏 3020

sql进行行列转换

1.行列转换 1.分别求出孙悟空、猪八戒、沙僧的总打怪数 select sum(kills) from user1 a join user_kills b on a.id=b.user_id where a.user_name='孙悟空' ; select sum(kills) from user1 a join user_kills b on a.id=b.user_id where...

qq_38331606的博客 560

【一本通】行列转换问题

矩阵可以认为是N*M的二维数组。现在有一个巨大但稀疏的矩阵。 N,M范围是:1≤ N,M ≤100000,有K个位置有数据,K的范围是,1≤K100000。 矩阵输入的方式是从上到下(第1行到第N行)、从左到右(从第1列到第M列)扫描,记录有数据的坐标位置(x,y)和值(v)。这是按照行优先的方式保存数据的。现在要求按照列优先的方式输出数据,即从左到右、从上到下扫描,输出有数据的坐标和数值。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6281

SQL - 行列转换与统计(with rollup,with cube,pivot解析)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

了解➔熟悉➔掌握➔精通 2248

Excel 行列转换的最简方法

问题描述   在工作中时常会遇到对 Excel 表格的处理。当编辑一张 Excel 表格时,发现表格的列数太多,而行数较少,为方便打印,这时你或许会希望将该表格行列转换;或许是为了做进一步做统计分析,当前格式不太方便,这时也会用到行列转换。   下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便:      但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转...

Raqsoft 4414

MySQL 行列转换变化各种方法实现总结(行变列报表统计 列变行数据记录统计等)

MySQL 行列转换变化各种方法实现总结(行变列报表统计 列变行数据记录统计等)

hfdchhu的博客 431
上一篇: 用SQL实现隔行排序
下一篇: 用SQL语句查看表或视图的注释信息
internetroot
博客等级 码龄20年 96粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值