sql 行列转换

艾尚美家 2024-05-31 14:44:08
最佳回答
行列转换等经典sql语句1.--行列转换原表: 姓名 科目 成绩 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 物理 82 李四 英语 90 李四 ** 70 王五 英语 90转换后的表: 姓名 数学 物理 英语 语文 ** 李四 0 82 90 85 70 王五 0 0 90 0 0 张三 90 85 0 80 0实例:create table cj --创建表cj( id int identity (1,1) not **, --创建列id,并且每次新增一条记录就会加1 name varchar(50), subject varchar(50), result int, primary key (id) --定义id为表cj的主键 );--truncate table cj--select * from cjinsert into cjselect '张三','语文',80 union all select '张三','数学',90 union allselect '张三','物理',85 union allselect '李四','语文',85 union allselect '李四','物理',82 union allselect '李四','英语',90 union allselect '李四','**',70 union allselect '王五','英语',90--行列转换declare @sql varchar(8000)set @sql = 'select name as 姓名'select @sql = @sql + ',sum(case subject when '''+subject+''' then result else 0 end) ['+subject+']'from (select d**tinct subject from cj) as cj --把所有唯一的科目的名称都列举出来select @sql = @sql+' from cj group by name'exec (@sql)2. 行列转换--合并原表: 班级 学号 1 1 1 2 1 3 2 1 2 2 3 1转换后的表: 班级 学号 1 1,2,3 2 1,2 3 1 实例:create table classno --创建表classno( id int identity(1,1) not **, --创建列id,并且每次新增一条记录就会加1 class varchar(50), --班级列 number varchar(50), --学号列 primary key(id) --定义id为表classno的主键);--truncate table classno--select * from classnoinsert into classnoselect 1,1 union allselect 1,2 union allselect 1,3 union allselect 2,1 union allselect 2,2 union allselect 3,1创建一个合并的函数--drop function kfreturncreate function kfreturn(@class varchar(50))returns varchar(8000)as begindeclare @str varchar(8000)set @str = ''select @str = @str + cast(number as varchar(50)) + ',' from classno where class = @class set @str = substring(@str,1,len(@str)-1)return(@str)end--调用自定义函数得到结果select d**tinct class,dbo.kfreturn(class) from classno3:列转行--drop table columntorowcreate table columntorow( id int identity(1,1) not **, --创建列id,并且每次新增一条记录就会加1 a int, b int, c int, d int, e int, f int, g int, h int, primary key(id) --定义id为表columntorow的主键 );--truncate table columntorow --select * from columntorowinsert into columntorow select 15,9,1,0,1,2,4,2 union allselect 22,34,44,5,6,7,8,7 union allselect 33,44,55,66,77,88,99,12declare @sql varchar(8000)set @sql = ''select @sql = @sql + rtrim(name) + ' from columntorow union all select ' from syscolumns where id = object_id('columntorow')set @sql = substring(@sql,1,len(@sql)-70)--70的长度就是这个字符串'from columntorow union all select id from columntorow union all select ',因为它会把id这一列的值也算进去,所以要把它截掉exec ('select ' + @sql + ' from columntorow') 20210311
汇率兑换计算器

类似问答
  • 建行官网基金转换
    • 2024-05-31 09:25:16
    • 提问者: 未知
    建行官网基金转换方法:登录个人网银,选择“投资理财,基金业务,基金首页,我的基金”查询,点击转换 。基金转换是指基金份额持有人按照基金合同和基金管理人届时有效的公告在本基金份额与基金管理人管理的其他基金的转换行为。
  • sql语句求翻译~~
    • 2024-05-31 21:18:07
    • 提问者: 未知
    想要知道这条语句的意思,首先,你要了解convert()和dateadd()(getdate()不用说了吧。。)convert()字面意思,转换convert(规定目标数据类型,要转换的值,日期格式) (121是yyyy-mm-dd hh:mi:ss.mmm(24h),126是yyyy-mm-ddthh:mm:ss.mmm(没有空格))dateadd() 也是字面意思,是针对日期的修改date...
  • 转换风险的转换风险概述
    • 2024-05-31 20:28:02
    • 提问者: 未知
    转换风险也称会计风险和折算风险(conversion r**k),是指由于外汇汇率的变动而引起的企业资产负债表中某些外汇资金项目金额变动的可能性。它是一种账面的损失和收益,并不是实际交割时的实际...
  • 请教基金转换转换问题
    • 2024-05-31 12:58:14
    • 提问者: 未知
    指数基金近期跌幅巨大,但后期反弹时的涨幅可能也会很大,此时转换可能造成两面挨耳光的局面,建议多看少动(仅供参考)
  • sql中对临时表如何用 pivot 进行列转换
    • 2024-05-31 23:56:08
    • 提问者: 未知
    1、跟是否临时表没有关系。2、select列表中的转出字段,也要加上[] 3、加上dq字段 select dq [42周] [43周] [44周] [45周] [46周] [47周] from#tempdbf pivot(sum(teu)for 周 in([42周],[43周],[44周],[45周],[46周],[47周]) b
  • sql查询语句求助
    • 2024-05-31 12:53:13
    • 提问者: 未知
    1234567891011121314151617181920with t as(select c.nsrbm,c.nsr_mc,a.wsh,a.tbsj from db_zgxt.t_hd_dqdehnshd a,db_zgxt.t_dm_gy_swjg b,db_zgxt.t_dj_jgnsr c,db_zgxt.t_dm_gy_swry d,db_zgxt.t_dm_dj_xydj e,db...
  • 交行 基金 网上转换
    • 2024-05-31 12:14:38
    • 提问者: 未知
    基金转换并非所有基金都行,网银没有的一般是不能转了。1.必须为同一基金公司的不同基金间才可以2.即便同一基金公司的基金,由于运作等原因,也不是全部都能互相转换。3.除此外,如该基金公司未开通转换业务、一只处于封闭期、认购期、限制申购等一些其他原因也会造成不能转换。4.后面没有“转换”选项的其它5只,应该是不能转换。网银中能显示的基本是实际情况,如果有转化计划,为防止到时出现不能转的情况,买基金后就...
  • sql多层嵌套对运行有什么影响
    • 2024-05-31 14:00:46
    • 提问者: 未知
    简单语句和多层语句的效率差不多,就和我们吃饭一样,用小碗一碗一碗的吃,和抱着锅吃的效率差不多,不影响快慢。一般你尽量使用多表连接吧,只有少数情况下多层嵌套才有优势。因为多表连接用得比较普遍,几乎所有的数据库管理系统都能针对连接进行优化。多层嵌套一般都是用临时表来实现的,如果内层查询返回的结果比较多,那么会特别浪费空间。
  • linux服务器上如何进行换行符转换?
    • 2024-05-31 15:09:58
    • 提问者: 未知
    最近在学习shell编程,可是在《linux程序设计》指定的网站上下载了源码,使用的时候却一直出问题。提示:”bash:./here1:/bin/sh^m:损坏的解释器:没有该文件或目录。之后用vi编辑器打开文件,...
  • 如何进行基金转换?
    • 2024-05-31 14:58:18
    • 提问者: 未知
    您可以将持有的某只基金转换为同一家管理人管理的另一只基金,两只基金的收费模式必须一样。  (1)前端收费是指当您认购、申购基金时,须缴纳购买手续费。  (2)后端收费是指当您认购、申购基金时,不需要交纳购买手续费,但在赎回时缴纳购买手续费,且随着持有基金年限的增加,手续费逐年递减。  (3)前、后端收费的详情请您垂询各基金管理公司的相关公告信息。
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。