网上看到的不错的SQL行列转换的Demo,学习了

智能SQL生成:后端技术与LLM的完美结合 如果各位有关注一些技术文章,难免会注意到这几年有一个词非常火,没错这就是“大模型”!那大模型是什么?有什么用呢?“大模型”是可以指任何规模较大、参数众多的机器学习模型,不仅限于自然语言处理(NLP),也可以包括计算机视觉、语音识别等其他领域的模型。大模型的特点是它们通常需要大量的数据来训练,以及相对较大的计算资源。大模型的用途十分广泛,在很多领域都有不错的应用价值:自然语言的生成和理解:大模型可以根据用户的问题生成连贯的文本回答、或是总结某些文章。ChatGPT就是一个不错的例子。图像的处理。 阅读详情

 /*
普通行列转换
(爱新觉罗.毓华 2007-11-18于海南三亚)

假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文  74
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94
*/

-------------------------------------------------------------------------
/*
想变成
姓名         语文        数学        物理         
---------- ----------- ----------- -----------
李四         74          84          94
张三         74          83          93
*/

create table tb
(
   Name    varchar(10) ,
   Subject varchar(10) ,
   Result  int
)

insert into tb(Name , Subject , Result) values('张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
go

--静态SQL,指subject只有语文、数学、物理这三门课程。
select name 姓名,
  max(case subject when '语文' then result else 0 end) 语文,
  max(case subject when '数学' then result else 0 end) 数学,
  max(case subject when '物理' then result else 0 end) 物理
from tb
group by name
/*
姓名         语文        数学        物理         
---------- ----------- ----------- -----------
李四         74          84          94
张三         74          83          93
*/

--动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
print @sql
set @sql = @sql + ' from tb group by name'
print @sql
exec(@sql)
/*
姓名         数学        物理        语文         
---------- ----------- ----------- -----------
李四         84          94          74
张三         83          93          74
*/

-------------------------------------------------------------------
/*加个平均分,总分
姓名         语文        数学        物理        平均分                总分         
---------- ----------- ----------- ----------- -------------------- -----------
李四         74          84          94          84.00                252
张三         74          83          93          83.33                250
*/

--静态SQL,指subject只有语文、数学、物理这三门课程。
select name 姓名,
  max(case subject when '语文' then result else 0 end) 语文,
  max(case subject when '数学' then result else 0 end) 数学,
  max(case subject when '物理' then result else 0 end) 物理,
  cast(avg(result*1.0) as decimal(18,2)) 平均分,
  sum(result) 总分
from tb
group by name
/*
姓名         语文        数学        物理        平均分                总分         
---------- ----------- ----------- ----------- -------------------- -----------
李四         74          84          94          84.00                252
张三         74          83          93          83.33                250
*/

--动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql1 varchar(8000)
set @sql1 = 'select Name as ' + '姓名'
select @sql1 = @sql1 + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql1 = @sql1 + ' , cast(avg(result*1.0) as decimal(18,2)) 平均分,sum(result) 总分 from tb group by name'
exec(@sql1)
/*
姓名         数学        物理        语文        平均分                总分         
---------- ----------- ----------- ----------- -------------------- -----------
李四         84          94          74          84.00                252
张三         83          93          74          83.33                250
*/

drop table tb   

---------------------------------------------------------
---------------------------------------------------------
/*
如果上述两表互相换一下:即

姓名 语文 数学 物理
张三 74  83  93
李四 74  84  94

想变成
Name       Subject Result     
---------- ------- -----------
李四         语文      74
李四         数学      84
李四         物理      94
张三         语文      74
张三         数学      83
张三         物理      93
*/

create table tb1
(
   姓名 varchar(10) ,
   语文 int ,
   数学 int ,
   物理 int
)

insert into tb1(姓名 , 语文 , 数学 , 物理) values('张三',74,83,93)
insert into tb1(姓名 , 语文 , 数学 , 物理) values('李四',74,84,94)

select * from
(
  select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
  union all
  select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
  union all
  select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '总分' then 4 end

--------------------------------------------------------------------
/*加个平均分,总分
Name       Subject     Result              
---------- -------    --------------------
李四         语文      74.00
李四         数学      84.00
李四         物理      94.00
李四         平均分    84.00
李四         总分      252.00
张三         语文      74.00
张三         数学      83.00
张三         物理      93.00
张三         平均分    83.33
张三         总分      250.00
*/

select * from
(
  select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
  union all
  select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
  union all
  select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
  union all
  select 姓名 as Name , Subject = '平均分' , Result = cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) from tb1
  union all
  select 姓名 as Name , Subject = '总分' , Result = 语文 + 数学 + 物理 from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end

drop table tb1

股票代码自动提示  最近在做一个股票代码提示功能,要求:输入股票代码、股票名称(拼音)首字母都能提示出相应股票。一 AJAX功能很久没摸过代码了,对AJAX更是陌生,能手写出具有智能提示功能的代码来当然是最灵活,但凭现在的技术,一两天绝对是搞不定的,光那一堆处理键盘事件的函数的调试,及对多浏览器的支持上就够折腾一阵子了。最早用了公司买的控件R.A.D的Combobox,拿一个一万多条数据的DataS 阅读详情

相关推荐

去哪找Java练手项目?

经常有读者在微信上问我: 在学编程的过程中,看了不少书、视频课程,但是看完、听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找? 类似的问题,有不少读者问,估计是大部分人的困惑。 练手项目那肯定是去github找啊! 之前我在知乎上回答过这种问题,分享了一些 github 的项目,点赞还不错。 所以,这次又重新整理了一下,分享出来。以下项目排名不分先后: 1,litemall https://github.com/linlinjava/litemall Star: 15.5k 这是一个小商

weixin_49794051的博客 695

SQL行列转换

本文主要介绍SQL常见的行列转换

Hudas的博客 3万+

Codex AI编程助手16大功能深度评测:从代码生成到实战避坑指南

AI代码生成技术正深刻改变软件开发流程,其核心原理是基于大规模代码语料训练的语言模型,能够理解自然语言指令并生成对应代码。这项技术的核心价值在于将开发者从重复性编码任务中解放,显著提升开发效率与代码一致性。在实际工程应用中,它尤其擅长处理代码补全、根据注释生成函数、生成单元测试等模式化任务,成为现代开发者的智能编程伙伴。然而,技术也存在明确边界,在复杂算法设计、完整项目生成和代码安全审计等场景需谨慎使用。本文基于一线开发实践,对Codex类工具的16项核心功能进行分级评测,涵盖从智能代码补全到自然语言对话式

weixin_30908941的博客 406

SQL四种方法实现行列转换超详细

大家好,我是楚生辉,在未来的日子里我们一起来学习大数据SQL相关的技术,一起努力奋斗,遇见更好的自己!本文详细的介绍了多个方法实现列转行,行转列,并提供了案例的材料,有需要的小伙伴可以自行获取与学习~

楚生辉的博客 6万+

学Java很难上手精通?因为你没找到这些练手项目

经常有读者问我: “ 在学编程的过程中,看了不少书、视频课程,但是看完、听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找? ” 类似的问题,有不少读者问,估计是大部分人的困惑。 练手项目那肯定是去github找啊! 之前我在知乎上回答过这种问题,分享了一些 github 的项目,点赞还不错。 所以,这次我又重新整理了一下,分享出来。以下项目排名不分先后: 1. litemall https://github.com/linlinjava/litemall Star: 15.5

siyuanwai的博客 2321

透传产品上报AEP平台数据流程

1. 什么是数据透传 数据透传:指的是在通讯中不管传输的业务内容如何,只负责将传输的内容由源地址传输到目的地址,而不对业务数据内容做任何改变。 这篇文章描述了如何将一台NB设备通过透传方式将数据传输到AEP平台,再通过数据订阅的方式获取到这些数据。 2. 步骤 2.1 设备在AEP平台创建 AEP:https://dm.ctwing.cn/ 新建产品 添加设备 根据模组的15位IMEI添加设备 开启内网穿透 具体可参照我的这篇博客:内网穿透-如何进行本地数据调试 设置数据推送

qq_42265394的博客 2297

【SQL语句实现行转列的3种方法】

工作中接触到可扩展页面字段的数据库设计方法,其中字段按列存储到MySQL中,在service中进行行列转换,由此猜想可否用SQL语句直接完成行列转换。本文是从网上搜集到的内容,稍作整理,未经验证。将列值旋转为列名(即行转列)是我们在开发中经常会遇到的一个需要,sql语句实现行转列有3种方法原文链接MarkdownText-to-HTMLAuthorsJohnLuke。

qq_41623592的博客 8993

Win11下DCMTK的Visual Studio 2022配置教程

最近有个新需求,需要完成读取和解析DICOM数据相关的SDK

qq_45797625的博客 3261

sql列转行 行转列

在 SQL 中,转换数据以按列排列的值成为按行排列的值(即所谓的“列转行”或“列转行”)是常见的数据操作需求。这个操作在不同的数据库管理系统中可以通过不同的技术手段来实现。在 SQL 中,行转列(也称为“透视”或“旋转”)的操作是将行数据转换为列数据,这在数据总结和分析中非常有用。不同的数据库系统有不同的方法来实现行转列的操作。操作的数据库,如 Oracle 和 SQL Server,可以直接使用。将多个列的数据合并到一个新的结果集的单一列中。如果你的列数是固定的,可以使用。函数可以实现类似的操作。

weixin_48485132的博客 1万+

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析

作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。

weixin_30898555的博客 335

运维系列【仅供参考】:微信版本过低 使用CheatEngine绕过

微信版本过低 使用CheatEngine绕过

weixin_54626591的博客 2134

数据持久化Nbear使用经验分享(一)附NBearLite源码和测试Demo

     说到数据持久化,.net下数据持久化框架主要有以下几种:    1.NHibernate  2.NBear  3.Castle ActiveRecord  4.iBATIS.NET  5.DAAB   这里我只谈下的Nbear使用感受和经验分享,首先,简短介绍下Nbear是什么样个东东:NBear是一个基于.Net 2.0、C#2.0开放全部源代码的的软件开发框架类库。NBear的设...

weixin_34044273的博客 148

把 NAST 变成你的遥控器:用 ABAP 程序精确触发与处理 Output Type

摘要 SAP中的Message Control机制通过NAST表记录输出状态,支持自动触发打印、邮件等操作。关键步骤包括: 构造NAST记录:定义输出类型、介质、处理状态等参数 调用处理函数:使用RV_MESSAGE_UPDATE_SINGLE更新表,通过WFMC_MESSAGES_PROCESS执行输出 典型应用场景: 单据补发(如PO邮件重发) 外部系统集成触发输出 故障恢复处理积压消息 注意事项: 需提交事务确保更新生效 区分S/4HANA新旧输出体系 正确处理派发时间(VSZTP)和状态(VSTAT

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 256

学习Java必须要学习的几个项目

点击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识经常有读者在微信上问我:在学编程的过程中,看了不少书、视频课程,但是看完、听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找?类似的问题,有不少读者问,估计是大部分人的困惑。练手项目那肯定是去github找啊!之前我在知乎上回答过这种问题,分享了一些 github 的项目,点赞还不错。所以,...

这个时代,作为程序员可能要学习小程序 231

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1910

yolov5-6.0的稀疏化训练、结构化剪枝、微调

YOLOv5的BN剪枝、微调

qq_41920323的博客 4394

Java面试MySQL核心考点:索引、事务、MVCC与SQL优化

在Java后端开发中,MySQL是持久化存储的核心组件,面试和工程实践都绕不开索引、事务与SQL优化等关键问题。理解B+树索引结构、聚簇索引与回表机制,掌握事务隔离级别、MVCC多版本并发控制以及锁的运作原理,是构建高性能数据库应用的基础。这些技术不仅决定数据查询效率,也影响系统在高并发场景下的数据一致性。从慢查询定位到死锁排查,从覆盖索引优化到深分页处理,每一个环节都需要扎实的原理支撑。本文围绕Java面试高频考点,系统梳理MySQL核心知识链路,帮助开发者快速建立完整复习框架。

weixin_34242819的博客 411

使用 MATLAB/Simulink 进行锂电池SOC估算和等效电路建模

本文介绍了使用MATLAB/Simulink进行锂电池SOC估算与等效电路建模的方法。首先阐述了SOC估算和等效电路模型的背景及重要性,然后详细讲解了系统结构设计的主要组成部分,包括电池模块、SOC估算模块(采用卡尔曼滤波器算法)和等效电路模型等。文章重点分步说明了建模过程:从创建Simulink项目、搭建电池模块,到实现SOC估算算法(提供示例代码),构建等效电路模型(Thevenin模型示例),添加传感器模块,最后设置仿真参数。通过仿真运行分析关键指标(SOC估算误差、电压偏差等)来评估模型性能,为锂电

xiaoheshang_123的博客 264

python实现表格搜索脚本

( 以下简称Text2SQL),是将自然语言文本(Text)转换成结构化查询语言SQL的过程,属于自然语言处理-语义分析(Semantic Parsing)领域中的子任务。“打破人与结构化数据之间的壁垒”,即普通用户可以通过自然语言描述完成复杂数据库的查询工作,得到想要的结果。

booze_的博客 1868

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

kettle 入门教程 ETL 基础 介绍

kettle 介绍 kettle是一个ETL(Extract, Transform and Load)数据抽取、转换、载入工具,ETL工具在数据仓库项目使用非常频繁,kettle也可以应用在以下一些场景: 在不同应用或数据库之间整合数据 把数据库中的数据导出到文本文件 大批量数据装载入数据库 数据清洗 集成应用相关项目是个使用 kettle使用非常简单,通过图形界面设计实现做什么业务,无需写代码去实现,因此,kettle是以面向元数据来设计 kettle支持..

0x8g1T9E- 8431

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MybatisPlus整合springCloud---去xml化

简述 还是和我之前分享的SpringBoot结合mybatis + tk.mapper(通用增删改查组件) + pageHelper(分页插件)一样,用springBoot我就不想用其他的配置文件,xml文件。 mybatisPlus2.x 版本不支持@Select或者@SelectProvider自定义sql结合分页插件使用,只支持xml文件的方式。所以本篇在mybatisPlus3.x基础...

Zzhou1990的博客 4963

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

一个基于深度文档理解的开源RAG(检索增强生成)系统——RAGFlow

RAGFlow 是一个基于深度文档理解的开源RAG(检索增强生成)系统,该系统旨在为企业和个人提供完整的RAG解决方案,结合大语言模型处理复杂格式数据。

2301_81888214的博客 1265

ShardingSphere数据加密YAML配置详解:从原理到实战

数据加密是保障数据库敏感信息安全的核心技术,通过在应用层与数据库之间构建代理层,实现对落盘数据的透明加密与解密。其工作原理基于SQL解析、数据加密、SQL改写与执行等关键步骤,确保业务代码无需感知加密过程。这项技术的核心价值在于满足合规要求、防止数据泄露,同时保持应用架构的简洁性。在工程实践中,它广泛应用于处理用户身份证、手机号、银行卡号等个人敏感信息的场景。Apache ShardingSphere作为分布式数据库中间件,其数据加密模块通过YAML配置文件提供了灵活、强大的加密能力。本文将深入解析Shar

weixin_33826609的博客 394

网易大数据开发校招笔试复盘:考点拆解与备考策略

大数据开发岗位的校招笔试,往往不是单纯考察知识点记忆,而是通过真实业务场景下的工程问题,筛选具备数据分析和分布式系统理解力的候选人。以Hive、Spark、Flink为代表的离线与实时计算组件,是笔试中的核心考察模块,而数据倾斜处理、数仓建模等实战技能更是区分度最高的考点。这道笔试背后的逻辑,是要求候选人在掌握Java/Scala基础的同时,具备从数据接入、计算引擎选型到OLAP查询的完整链路认知。对于求职者而言,理解这类笔试的出题意图,围绕高频考点构建系统化的备考框架,并熟悉从Kafka到Flink再到C

weixin_30251829的博客 337

学Java很难上手精通?快来用这些项目练手

经常有读者在微信上问我:在学编程的过程中,看了不少书、视频课程,但是看完、听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找?类似的问题,有不少读者问,估计是大部分人的困惑。...

伍婷的专栏 260
上一篇: 读书疑惑 敏捷估计与计划
下一篇: 博客摘录「 RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5」2024年3月18日
rgqancy
博客等级 码龄20年 24粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值