位置: 编程技术 - 正文

table 行转列的sql详解(行转列sql函数)

编辑:rootadmin
一、要求 1 创建数据表 CREATE TABLE [dbo].[StuScore]( [stuid] [int] NOT NULL, [subject] [nvarchar]() NULL, [score] [decimal](5, 1) NULL ) 2 插入测试数据 stuid subject score 3 chinese .0 3 math .0 4 chinese .0 5 chinese .0 5 math .0 6 chinese .0 7 math .0 8 chinese .0 8 math .0 3 行转列后的结果 stuid chinese math 3 .0 .0 4 .0 0.0 5 .0 .0 6 .0 0.0 7 0.0 .0 8 .0 .0 二 、分析 1 行转列,一个重点就是怎么样知道有多少列,怎么样创建这些列?我们可以先把这个问题搁置,而假设这些列是已知的。 例如示例数据中,可以先假设subject的数据[chinese,math]是已知的,这样问题就简化了许多 2 当已知了chinese,math后,我们至少要先得到转换后的tabel结构 如下; select stuid, 0 as chinese, 0 as math from dbo.StuScore 结果如下 stuid chinese math 3 0 0 3 0 0 4 0 0 5 0 0 5 0 0 6 0 0 7 0 0 8 0 0 8 0 0 3 接着就需要往这个数据集中去填充chinese, math的数据 select stuid, case subject when 'chinese' then score else 0 end as chinese, case subject when 'math' then score else 0 end as math from dbo.StuScore 结果如下: stuid chinese math 3 .0 0.0 3 0.0 .0 4 .0 0.0 5 .0 0.0 5 0.0 .0 6 .0 0.0 7 0.0 .0 8 .0 0.0 8 0.0 .0 4 细心的读者会发现步骤3中的结果与我们想要的已经非常接近了,只需再做一个sum()处理,就OK了 select stuid, sum(case subject when 'chinese' then score else 0 end ) as chinese, sum(case subject when 'math' then score else 0 end ) as math from dbo.StuScore group by stuid 得到的正是我们想要的结果 stuid chinese math 3 .0 .0 4 .0 0.0 5 .0 .0 6 .0 0.0 7 0.0 .0 8 .0 .0 是不是现在就已经完成了呢?答案是否定的。前面我们已经说过,是为了简化问题,在假设已经知道了subject数据的情况下,这么处理的,实际上subject的数据是可变的,未知的,接下来就是要解决这个问题了 5 要获取subject的数据其实很简单 select distinct subject from dbo.StuScore 获取以后怎样得到case subject when 'chinese' then score else 0 end 这种语句? 可以根据subject的值去动态的组sql语句 看下面的一段代码 declare @sql varchar() set @sql='' select @sql =@sql+ ',case subject when '''+subject+''' then 1 else 0 end as ' + subject from (select distinct subject from dbo.StuScore) as sub print @sql message打印的信息如下: ,case subject when 'chinese' then 1 else 0 end as chinese,case subject when 'math' then 1 else 0 end as math 6 最后我们就需要将前面步骤综合起来,得到最终的sql declare @sql varchar() set @sql='select stuid' select @sql =@sql+ ',sum(case subject when '''+subject+''' then score else 0 end) as ' + subject from (select distinct subject from dbo.StuScore) as sub set @sql=@sql + ' from dbo.StuScore group by stuid' exec(@sql) stuid chinese math 3 .0 .0 4 .0 0.0 5 .0 .0 6 .0 0.0 7 0.0 .0 8 .0 .0 至此,整个分析过程和结果就都出来了。 初试写文章, 多包涵,指正。

推荐整理分享table 行转列的sql详解(行转列sql函数),希望有所帮助,仅作参考,欢迎阅读内容。

table 行转列的sql详解(行转列sql函数)

文章相关热门搜索词:行转列 sqlserver,行转列sql case when,列转行函数sql,行转列sql函数,行转列sql函数,sql中行转列,sql行转列 列转行,sql中行转列,内容如对您有帮助,希望把文章链接给更多的朋友!

三步堵死 SQL Server注入漏洞 SQL注入是什么?许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是

sql 去零函数 datagridview中数字类型常出现后面的零不能去掉 declare@bldecimal(,6),@numint,@num1int,@strchar(),@str1char(),@str2char(),@str3char(),@zxint,@zx1intset@bl=.set@str1=ltrim(REVERSE(cast(@blaschar())))---颠倒print@str1set@zx1=ca

insert into tbl() select * from tb2中加入多个条件 insertintowarehouse(wlbm,wlmc,ys,wlgg,sybm,wlfl)select*from(selectrtrim(b.bjbm)asbjbm,a.bjmcaswlmc,a.ys,a.clggaswlgg,a.bm,(casea.bmwhen'注塑'then2when'吹塑'thenwhen'搪胶'then3when'喷油'then4

标签: 行转列sql函数

本文链接地址:https://www.jiuchutong.com/biancheng/349092.html 转载请保留说明!

上一篇:常用SQL功能语句(sql常用语句大全简书)

下一篇:sql 去零函数 datagridview中数字类型常出现后面的零不能去掉(sql中去掉结果为零的)

  • 资金性质生产性是什么意思
  • 增值税一般纳税人税率
  • 印花税应计什么科目?
  • 长期股权投资中应采用成本法核算的是
  • 残疾人就业保障金
  • 上月社保未扣款怎么回事
  • 饭店发光板图片大全
  • 混合销售行为如何缴纳增值税税率
  • 政府补贴是否要交企业所得税
  • 机票行程单改成发票可以报销吗
  • 租赁财产的残值处理
  • 等额本息还款的特点
  • 企业所得税税前扣除凭证管理办法
  • 已付的账款叫什么
  • 税控设备全额抵扣政策
  • 修理费没有发票怎么做账
  • 待摊费用的金额
  • 企业中由特定人员所承担的一项
  • 燃气公司开发票的工程款入什么会计科目核算与分录怎么写?
  • 客户已经抵扣的发票怎么开负数发票给对方
  • 如何确定旧机器的折旧年限?
  • 企业所得税季度申报时间
  • 小规模纳税人财务制度
  • 2019年小规模纳税人免征增值税政策
  • 直接转让土地使用权 土地增值税申报表
  • php数据库分页是怎么实现的
  • 鸿蒙系统进入工程菜单
  • 哪些资产类科目增加记贷方
  • 酒店没有营业执照开业员工有责任吗
  • 企业向银行申请办理非原路的服务贸易退汇,银行应当
  • php socket_read
  • 总公司固定资产包括哪些
  • 权益法转成本法为什么用账面价值
  • 超期未认证的发票怎么处理
  • 结存材料实际成本分录
  • php session用法
  • 前端微信小程序支付功能怎么实现
  • vuea
  • 员工持股平台合伙企业
  • php连接mysql8.0
  • discuz手机标准版
  • 个体户个人所得税税率表2023计算
  • 非成品油发票为什么不能抵扣
  • 如何开具电子发票广东
  • 物业费税目
  • wordpress怎么降级
  • 变卖废旧物资的增值税税率
  • 哪些费用进项税额要转出
  • 工业企业会计核算中常见的会计核算程序有哪些?
  • 开矿泉水发票怎么开?
  • 怎么计算利润的百分比
  • 个人所得税的征收
  • 销售旧固定资产开票编码
  • 个人账户转公司账户附言写什么
  • 应计利息是什么类科目核算
  • 应付职工薪酬的工资是实发工资还是应发工资
  • 暂估入库产品销售结转成本
  • 什么情况下必须打狂犬疫苗
  • 企业采用公允价值进行会计核算,所体现的会计质量要求
  • win10+Ubuntu16.04 LTS双系统完美教程(图文教程)
  • windows.exe
  • win10系统打不开控制面板
  • spamsub.exe - spamsub进程是什么文件
  • win8.1怎么用
  • win10周年更新版是什么意思
  • win7防火墙怎么彻底关闭
  • python中requests库session对象的妙用详解
  • js中的正则表达式的例子
  • html dom元素
  • jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
  • 中国税务局河北省税务局官网
  • 国家电子税务局江苏省电子税务局
  • 国税和地税分别交什么税
  • 国企人事处长是什么级别?
  • 地税发票查询官网查询
  • 贵州省电子税务
  • 如何查询公司的电话号码
  • 税务数字证书怎么下载安装
  • 长治一诺代理记账公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设