行转列问题

itliyi 2014-06-11 04:00:16

查询结果
班级 项目 人数
1班 立定跳远 总:10 通过:1
1班 跑步 总:10 通过:9

能否转换成如下

班级 立定跳远 跑步
1班 总:10 通过:1 总:10 通过:9

thks

...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
netajax1 2014-06-11
  • 打赏
  • 举报
回复
发给我看干嘛我暂时不会
  • 打赏
  • 举报
回复
引用 7 楼 galenkeny 的回复:
行转列在这个论坛估计是不是问的次数最多的问题了?
我看是,建议版主 搞一个专题,并置顶。
以学习为目的 2014-06-11
  • 打赏
  • 举报
回复
行转列在这个论坛估计是不是问的次数最多的问题了?
在路上_- 2014-06-11
  • 打赏
  • 举报
回复
借用版主数据

create table [huang]([班级] nvarchar(4),[项目] nvarchar(8),[人数] nvarchar(10))
insert [huang]
select N'1班',N'立定跳远',N'总:10 通过:1' union all
select N'1班',N'跑步',N'总:10 通过:9'

select 班级, max(case 项目 when '立定跳远' then 人数 end) 立定跳远,
  max(case 项目 when '跑步' then 人数 end) 跑步
from huang
group by 班级

drop table huang;
/*
班级   立定跳远       跑步
---- ---------- ----------
1班	总:10 通过:1	总:10 通过:9
*/
itliyi 2014-06-11
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-11 16:06:20
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
--	Apr  2 2010 15:48:46 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([班级] nvarchar(4),[项目] nvarchar(8),[人数] nvarchar(10))
insert [huang]
select N'1班',N'立定跳远',N'总:10 通过:1' union all
select N'1班',N'跑步',N'总:10 通过:9'
--------------生成数据--------------------------

declare @s nvarchar(4000)
set @s=''
Select     @s=@s+','+quotename([项目])+N'=max(case when [项目]=N'+quotename([项目],'''')+N' then [人数] else null end)'
from [huang] group by [项目]
exec(N'select [班级]'+@s+N' from [huang] group by [班级]')
 
----------------结果----------------------------
/* 
班级   立定跳远       跑步
---- ---------- ----------
1班   总:10 通过:1  总:10 通过:9
*/
多谢大神
在路上_- 2014-06-11
  • 打赏
  • 举报
回复
试试

select 班级, max(case 项目 when '立定跳远' then 人数 end) 立定跳远,
  max(case 项目 when '跑步' then 人数 end) 跑步
from 表
group by 班级
發糞塗牆 2014-06-11
  • 打赏
  • 举报
回复
行转列可以看看这篇文章:http://www.cnblogs.com/gaizai/p/3753296.html
發糞塗牆 2014-06-11
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-11 16:06:20
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
--	Apr  2 2010 15:48:46 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([班级] nvarchar(4),[项目] nvarchar(8),[人数] nvarchar(10))
insert [huang]
select N'1班',N'立定跳远',N'总:10 通过:1' union all
select N'1班',N'跑步',N'总:10 通过:9'
--------------生成数据--------------------------

declare @s nvarchar(4000)
set @s=''
Select     @s=@s+','+quotename([项目])+N'=max(case when [项目]=N'+quotename([项目],'''')+N' then [人数] else null end)'
from [huang] group by [项目]
exec(N'select [班级]'+@s+N' from [huang] group by [班级]')
 
----------------结果----------------------------
/* 
班级   立定跳远       跑步
---- ---------- ----------
1班   总:10 通过:1  总:10 通过:9
*/
itliyi 2014-06-11
  • 打赏
  • 举报
回复
【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现代码。首先利用DWT对电能质量信号进行特征提取,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的时频特性;随后结合多种机器学习分类器(如SVM、BP神经网络、随机森林等)对提取的特征进行训练与分类,构建高效的扰动识别模型。文中详细阐述了信号预处理、特征工程、模型训练与评估的全过程,验证了该方法在多类扰动识别中的准确性与鲁棒性。; 适合人群:具备一定信号处理和机器学习基础知识,从事电力系统、电气工程及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于电能质量监测系统中对异常信号的自动识别与分类;②为智能电网中的故障诊断与电能质量管理提供技术支持;③作为Matlab仿真实践案例,帮助理解DWT在信号分析中的应用及ML分类器的实现流程。; 阅读建议:建议结合Matlab代码同步运行与调试,深入理解DWT分解过程及特征提取方法,同时可尝试更换不同分类器或优化参数以提升分类性能,进一步拓展至实际数据的应用验证。

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧