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. 剑指offer【02】- 替换空格(Java)

    题目:替换空格 考点:字符串 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ...

  2. PCA降维实验代码

    实验需要提取数据的空间信息,所以要对光谱进行降维,使用主成分分析算法,样例代码备份如下 # -*- coding: utf-8 -*- """ Created on Mo ...

  3. 学习之响应式Web设计---一个实例

    周末闲来无事,做了一个响应式设计的例子.当然,由此并不能窥见响应式设计真谛之一斑.但,对于初次接触响应设计,对于响应式设计的概念依旧模糊不清的同学来说,或许是个启蒙! 闲语暂且不表,进入正题,这里没有 ...

  4. Android Studio中设置一个按钮的不同点击触发事件

    my_day_model = (RelativeLayout) v.findViewById(R.id.my_day_model);my_day_pic = (ImageView) v.findVie ...

  5. [LeetCode解题报告] 502. IPO

    题目描述 假设 LeetCode 即将开始其 IPO.为了以更高的价格将股票卖给风险投资公司,LeetCode希望在 IPO 之前开展一些项目以增加其资本. 由于资源有限,它只能在 IPO 之前完成最 ...

  6. Python使用@property装饰类方法

    Python版本:3.5.2 假如我们有一个Student类,并在其中定义了一个score属性,但是score属性会被显露出去,没办法检查参数,导致成绩可以随意更改: stu = Student() ...

  7. Asp.Net4.5 mvc4(二) 页面创建与讲解

    一.Contorl 通过目录结构我们可以看到contorllers类的命名方式 命名规则:前缀+Controller. 在看看contorller中的action方法 using System; us ...

  8. String,StringBuilder, StringBuffer

    String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

  9. c# 判断是否是手机访问

    public static bool CheckAgent() { bool flag = false; string agent = HttpContext.Current.Request.User ...

  10. C# 基础运算符及运算

    本节主要讲述运算符的分类及其实际运用 运算符 分类 符号 解释 优先级 算数 ++  -- 加加(加1)  减减(减1) 由高到低,即执行顺序由上到下(圆括号的优先级最高) *  /  % 乘  除  ...