mysql行转列sql函数_(转)行变列SQL语句(MSSQL) - jack - 博客园
SQL交叉表实例
很简单的一个东西,见网上好多朋友问“怎么实现交叉表?”,以下是我写的一个例子,数据库基于SQL SERVER 2000。
-- ======================================================
--交叉表实例
-- ======================================================
建表:
在查询分析器里运行:
CREATE TABLE [Test] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Source] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
INSERT INTO [test] ([name],[subject],[Source]) values (N‘张三‘,N‘语文‘,60)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘李四‘,N‘数学‘,70)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘王五‘,N‘英语‘,80)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘王五‘,N‘数学‘,75)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘王五‘,N‘语文‘,57)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘李四‘,N‘语文‘,80)
INSERT INTO [test] ([name],[subject],[Source]) values (N‘张三‘,N‘英语‘,100)
Go
交叉表语句的实现:
--用于:交叉表的列数是确定的(用了这个很不错!)
select name,sum(case subject when ‘数学‘ then source else 0 end) as ‘数学‘,
sum(case subject when ‘英语‘ then source else 0 end) as ‘英语‘,
sum(case subject when ‘语文‘ then source else 0 end) as ‘语文‘
from test
group by name
--用于:交叉表的列数是不确定的
不确定列,字段2的值范围不固定。
create table a
(id VARchar(4),
F2 VARCHAR(2),
F3 INT)
insert a(ID,F2,F3)
select ‘A001‘,‘01‘,12
UNION ALL SELECT ‘A001‘,‘02‘,24
UNION ALL SELECT ‘A002‘,‘01‘,10
UNION ALL SELECT ‘A002‘,‘03‘,5
UNION ALL SELECT ‘A003‘,‘02‘,6
UNION ALL SELECT ‘A004‘,‘04‘,13
--SELECT * FROM A
--不确定列数
declare @sql varchar(8000)
set @sql = ‘select ID,‘
select @sql = @sql + ‘sum(case F2 when ‘‘‘ +F2+‘‘‘
then F3 else ‘‘‘‘ end) as ‘‘‘+ ‘字段(‘+F2+‘)‘‘,‘
from (select distinct F2 from A) as B
select @sql = left(@sql,len(@sql)-1) + ‘ from A group by ID‘
--PRINT @SQL
exec(@sql)
go
==============================================================================
交叉表:
CREATE TABLE Test(字段1 VARCHAR(10),字段2 VARCHAR(10),字段3 VARCHAR(10))
INSERT Test SELECT ‘a001‘, ‘01‘ , 12
UNION ALL SELECT ‘a001‘, ‘02‘ , 24
UNION ALL SELECT ‘a002‘, ‘01‘ , 10
UNION ALL SELECT ‘a002‘, ‘03‘ , 5
UNION ALL SELECT ‘a003‘, ‘02‘ , 6
UNION ALL SELECT ‘a004‘, ‘04‘ , 13
SELECT * FROM Test
SELECT 字段1,
[字段(01)]=MAX(CASE WHEN 字段2 =‘01‘ THEN 字段3 ELSE ‘‘ END),
[字段(02)]=MAX(CASE WHEN 字段2 =‘02‘ THEN 字段3 ELSE ‘‘ END),
[字段(03)]=MAX(CASE WHEN 字段2 =‘03‘ THEN 字段3 ELSE ‘‘ END),
[字段(04)]=MAX(CASE WHEN 字段2 =‘04‘ THEN 字段3 ELSE ‘‘ END)
FROM Test
GROUP BY 字段1
mysql行转列sql函数_(转)行变列SQL语句(MSSQL) - jack - 博客园相关推荐
- android 有vi命令行,vi命令详解_游离在Android与ios之间的技术博客_51CTO博客
vi 简易说明 要管理好 Linux 系统﹐少不了要对设定档案进行编辑,如果您用惯了 Microsoft Word 或 Corel Wordperfect 的话,除了 Xwindows 里面的编辑程式 ...
- 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet - 邀月 - 博客园
邀月工作室 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet 原文地址: http://technet.microsoft.com/zh-cn/library ...
- java求数组中满足给定和的数对_关于数组的几道面试题 - zdd - 博客园
2011年2月15日更新,加入找出绝对值最小的元素一题 数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论.目前有以下1 ...
- Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON() ~~~~~(转自残剑博客园)
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...
- java httpclient 采集_使用java HttpClient 与Web服务器交互 - elliott - 博客园
下面程序想自动登陆系统: public static void main(String[] args) throws Exception{ HttpClient client = new HttpCl ...
- 经典SQL语句大全-【转载自】博客园,作者博客:YuBinfeng's Technology Blog
因最近学习MySQL,闲来无事逛帖子时,发现这篇较为经典的博客,特转载以防备用学习,同时希望也可以帮到他人,废话不多说,进入正文 一.基础 1.说明:创建数据库 CREATE DATABASE da ...
- 详细分析MySQL的日志(一)本文原创地址:博客园骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9001061.html
本文原创地址:博客园骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9001061.html 官方手册:https://dev.mysql.com/doc/refm ...
- 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...
- dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...
- nodejs爬虫与python爬虫_【nodeJS爬虫】前端爬虫系列 -- 小爬「博客园」
写这篇 blog 其实一开始我是拒绝的,因为爬虫爬的就是cnblog博客园.搞不好编辑看到了就把我的账号给封了:). 言归正传,前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 ph ...
最新文章
- 基于Spark的机器学习实践 (九) - 聚类算法
- 直播预告:基于强化学习的关系抽取和文本分类 | PhD Talk #18
- JDBC(九)DatabaseMetaData 数据库元数据
- 分别安装搭建lamp服务环境
- 蓝牙设备一键切换工具ToothFairy for Mac中文
- Android IntentService的使用和源代码分析
- 【TWVRP】基于matlab遗传算法和模拟退火求解带时间窗自行车调度问题【含Matlab源码 370期】
- 嵌入式开发实践系列文章 - 目录
- arduino蓝牙通讯代码_arduino蓝牙通讯
- Cadence导出Excel格式BOM表
- FPGA零基础学习:FPGA芯片简介
- 必看五大安全趋势 Fortinet全球威胁态势报告发布
- 第22节 NAT——实现公私有IP地址转换
- RequestMapping的映射URL模板
- 保险丝选型8大考虑要素
- win11电脑锁定触摸板或无鼠标打开触摸板
- SWING实现类似微信的泡泡聊天界面
- inplace = True 是什么意思
- 韦东山ARM第一期作业(三)内存控制器和SDRAM
- ## 三天打鱼两天晒网问题
热门文章
- L1-041 寻找250 (10 分)—团体程序设计天梯赛
- MTK平台camera驱动架构分析
- 【基础】位与运算与取余
- React Native npm镜像安装命令
- 摘录 vue.js代码片段的理解
- C++ unordered_map 在key为string类型和char*类型时测试时间性能差异
- $《第一行代码:Android》读书笔记——第5章 Broadcast
- 蛇形填数 ------- 模拟水题
- Android Fragment-APP调用其他APP中的Fragment 1
- 在linux系统下安装oracle前的准备工作(配置oracle环境变量)