1、sql server 转置很容易搜到方法,一般需要手动写转置的列项,如果多时会比较烦,下面试了省事的方法:

--案例需求数据
----方法一:
if object_id('tempdb.dbo.#student') is not null drop table #student
select dcdate,student,score
into #student
from ABC.dbo.t_student_mx 
where dcdate='20180201'
declare @sql varchar(8000)
declare @sql2 varchar(8000)
select @sql = isnull(@sql+',','') + '['+student+']'
from #student 
   print @sql  
   set @sql2 = 'select * into a  from #student  pivot(sum(score) for student in ('+@sql +')) t'
   exec(@sql2)----这里存入了实体表a
 
;
---方法二:是通常用的方法
select * 
into #b
from #student pivot(sum(score) for student in ([张三],[李四],[王五],[赵六],[陆七],[冯宝宝],[张楚兰],[王也])
 
2、还要可能会遇到随机分配的情况,比如来了几个学生,随机分配给三位老师,我试了下面这些:

 
----随机的方法1:如果有一群学生需要随机分配给三位老师:可以这样:先把学生和老师表关联就会出现一个人分别对应几个学生而且三个老师的编码随机(没有排序)
---第二步:一个学生就可以对随机编码的老师按照最大编码或最小编码选择出唯一一个对应人,因为编码是随机的
drop table #e
select distinct a.student,b.teacher,row_number() over (order by newid()) bm
into #e
from ABC.dbo.student  a, ABC.dbo.v_teacher b
where b.teacher in ('黄磊','黄渤','张三')
;
select a.*
from #e a
where a.bm=(select max(bm) from #e z where a.student=z.student)
;
select teacher,count(1)
from #d
group by teacher
;
----随机的方法2:用游标对每个学生在三个老师中随机选择假设一个学生:直接对每个学生随机出一个老师,因为学生唯一对应一个老师而员工是一对多。也可以固定随机选出数,一个员工随机几百个。
if object_id('tempdb.dbo.#student_yg') is not null drop table #student_yg
select top 1 teacher,a.student,newid() id
into #student_yg
from ABC.dbo.student a, ABC.dbo.v_teacher b
where b.teacher in ('黄磊','黄渤','黄渤')
order by newid()
 
truncate table #student_yg
declare @student varchar(30)
declare cur cursor for
SELECT student FROM ABC.dbo.student_20180711 
open cur
fetch next from cur into @student
while @@FETCH_STATUS=0
begin
    print @student
    exec( 'insert into #student_yg select top 1 teacher,a.student,newid() id from ABC.dbo.v_teacher b,ABC.dbo.student a
    where  b.teacher in (''黄磊'',''黄渤'',''黄渤'') and a.student='+@student+' order by newid()')
    fetch next from cur into @student
end
close cur
deallocate cur
;
select teacher,count(1)
from #student_yg
group by teacher
3、在数据查询时会遇到一些编码:比如123jw:1对应:好 2:吃,3;玩等,如何把123jw 翻印出来并用','隔开呢.
----用xml来直接拼
select distinct a.code,name=(stuff((select ','+code_name from ABC.dbo.code_name z where charindex(replace(z.code,' ',''),a.code)>0 for xml path('')),1,1,'')) 
from #b a 
group by a.code
 
慢慢学习,一步一步成长,从坚持开始,都是特别基础和简单的东西,望大家指导----

sql server 转置 和实现随机分配和一串代码的含义拼在一行的更多相关文章

  1. 浅析SQL Server数据库中的伪列以及伪列的含义

    SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个 ...

  2. SQL Server 2012 安装过程详解(包含每一步设置的含义)

    转http://www.cnblogs.com/EastLiRoar/p/4051969.html 一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”. ...

  3. SQL Server 2008 R2——VC++ ADO 操作 多线程操作 代码结构

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  4. SQL Server 本地时间和UTC时间的相互转换的代码

    DECLARE @LocalDate DATETIME, @UTCDate DATETIME, @LocalDate2 DATETIME   SET @LocalDate = GETDATE() SE ...

  5. SQL SERVER中如何查找存储过程中一段代码

    select b.name ,a.text from syscomments a,sysobjects b where and object_id(b.name)=a.id and b.xtype i ...

  6. SQL不重复查找数据及把一列多行内容拼成一行

    如下表: 表名:Test ID RowID Col1 Col2 1 1 A A 2 1 B A 3 1 A B 4 1 C B 1,查找表中字段重复的只查找一次 select distinct Col ...

  7. 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(七)

    假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢?这个功能在很多电商类网站都有,那么,通过SQL Server Analysis Services的数据挖掘功能,你也可以轻松的来构建类似的功 ...

  8. SQL Server 维护计划实现数据库备份(Step by Step)(转)

    SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server  ...

  9. SQL Server安全(1/11):SQL Server安全概述

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

随机推荐

  1. undefined 和 undeclared 的区别

    var a; //undefined b; // b is not defined 区别:在变量作用域中已经申明但没有赋值的变量(如 a),是undefined.相反,在变量作用域中没有申明过的变量, ...

  2. Python3学习笔记 - day1

    前言 本文不是一篇系统的从零开始学习Python的教程,如果你需要从零开始学习Python,廖雪峰的官方网站中Python教程这部分将是比较好的一种选择,如果你英语比较好,也可以在国外的一些网站上找到 ...

  3. 关于jquery中prev()和next()的用法

    用prev()和next()方法动态的添加class.以达到当前元素的前面几个元素或后面的几个元素添加class <body> <ul> <li>1</li& ...

  4. list源码2(参考STL源码--侯捷):constructor、push_back、insert

    list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...

  5. Android SD卡读写

    package com.jredu.zuiyou.activity; import android.os.Bundle;import android.os.Environment;import and ...

  6. 自己动手,写一个分布式系统(附c#代码示例)

    分布式系统有很多成熟的解决方案.如:微软的WCF.WCF太过于复杂,配置也麻烦.其实可以自己动手设计一个小的分布式系统.系统的原理完全在自己掌握之中,可以根据业务随机而变.这里展示远程调用最核心最基本 ...

  7. pythonic(fork)

    转载  https://wuzhiwei.net/be_pythonic/

  8. 【JAVA WEB教程】jsp环境搭建+部署网站(eclipse+tomcat)【详细+图文】

    下载tomcat7.X   下载地址为:http://tomcat.apache.org/download-70.cgi 下载完成之后就开始安装   Next   I Agree   选中所有的复选框 ...

  9. POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)

    题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our cit ...

  10. css布局------左右宽度固定,中间宽度自适应容器

    HTML /*适用方法1,方法2*/<body> <div class="container"> <div class="left" ...