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. websphere静态文件转发出错问题 SimpleFileServlet

    ERROR DESCRIPTION: Using a RequestDispatcher to explicitly forward to the WebContainer's SimpleFileS ...

  2. dart之旅(三)- list

    list, 在 js 中被称为数组, 但是和 js 中的数组还是有不少不同的地方,我们来看一个例子: // 声明一个长度不可变的 list List<int> fixedLengthLis ...

  3. jar包版本介绍(beta,alpha,release),软件的版本介绍

    α(Alpha) 此版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员.一般而言,该版本软件的bug(漏洞)较多,普通用户最好不要安装.主要是开发者自己对 ...

  4. Enumerable转换为DataTable

    今天在项目组公共类库中发现一个 Enumerable类型转换为DataTable,写的挺精简的,拿出来跟大家共享一下. using System; using System.Collections.G ...

  5. 光流法详解之一(LK光流)

    Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ...

  6. 鸟哥的Linux私房菜:基础学习篇 —— 第六章笔记

    1.下面这些就是比较特殊的目录,得要用力的记下来才行: . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表“目前使用者身份”所在的主文件夹 ~account 代表 account ...

  7. [HEOI2016] 字符串

    Description 给定长度为n的字符串,m次询问,每次询问s[a...b]的所有子串与s[c...d]的LCP的最大值.n,m<=10^5. Solution 感觉这种n,m<=10 ...

  8. Mybatis之基于XML的调用存储过程与手动回滚事务

    一.调用存储过程 一.返回单个值 1.存储过程准备 这里先创建一个存储过程,传入参数为age,传出参数为count.然后先测试一下是否正确. CREATE DEFINER=`root`@`localh ...

  9. SQL Server 2012使用Offset/Fetch Next实现分页

    在Sql Server 2012之前,实现分页主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ...Rows  Fetch Next ... Rows onl ...

  10. C# 函数式编程:LINQ

    一直以来,我以为 LINQ 是专门用来对不同数据源进行查询的工具,直到我看了这篇十多年前的文章,才发现 LINQ 的功能远不止 Query.这篇文章的内容比较高级,主要写了用 C# 3.0 推出的 L ...