SQLServer中央银行列转换Pivot星座 UnPivot

协调小贴士

PIVOT用于将列值旋转为列名(即行转列),在SQL
Server 两千得以用聚合函数同盟CASE语句完结

本文慎入!泣血长文(花了区区近七日时间进行思想和写作)!!!吃透耗费时间差不多15分钟,需流量1MB,但读后营业功力大增!请在WiFi或流量丰裕的动静下阅读此文。假如图片文字过小,点击图片即可放大,即可知到清晰的图片。

PIVOT的形似语法是:PIVOT(聚合函数(列) FOLAND 列 in (…) )AS
P

怎么都不说,先上一张最后的数据地图效果图,热力图部分是目的用户的遍布,深橙和浅湖蓝的购物车表示2种类型的经贸购物场地。而深浅不一的浅橙格子块则意味着房价。

整体语法:

图1结尾效果图

table_source

那正是说难题来了:

PIVOT(

·那张图的造作要求怎么样数据?

聚合函数(value_column)

·您能从那张图上收获哪些音讯?

FOR
pivot_column

·那张图能用到哪些地方?

IN()

如果您对上述二个难题摸不着头脑,那很符合规律,因为那提到到实际的应用的情景/背景,也正是说,要用数据地图消除什么的难题。

)

至于那张图的种类背景和制程,下文将和盘托出,而且你不需求懂编制程序、设计,也不需求懂艰深的总计学知识,用短短15分钟的年月,你将get到这几个酷炫并且还有实际用途的“黑技能”,让您的同事和老总娘对你另眼看待!

 

先说一下本文的行文布置

UNPIVOT用于将列明转为列值(即列转行),在SQL Server 3000得以用UNION来促成

§先科普一下数量地图的定义、一般制作方法和常用工具;

一体化语法:

§接下来再用实际、具体的案例来教学数据地图该怎么在营业工作中动用;

table_source

§说到底是总结的下结论,说说制作数据地图供给小心的地点,以及越来越多的采取意况。

UNPIVOT(

一 、数据地图是啥?

value_column

1.概念及用途

FOR
pivot_column

我们在做运营、市镇方面包车型地铁数量解析时,常会涉及到地理坐标、区域和地名与数码涉嫌的情形,如

IN()

有些APP在举国各种城市的挂号会员数分布情形

)

某些O2O生鲜品牌的线下网点在某些城市中的分布意况

 

早就怀有有些地点地下消费者的地理分布数据及有关商业生态消息(购物为主、公共交通站点和集团分布等新闻),要求合理选取地推场所

小心:PIVOT、UNPIVOT是SQL Server
二〇〇六 的语法,使用需修改数据库包容级别
 在数据库属性->选项->包容级别改为  
90

像前边五个难点,以excel表格的格局来展现就可以了,可是对于第七个难题的处理,需求组合地图和多少两上边音信,那即将选拔高阶的数目处理工科具了—

 

Duang duang duang~数据地图那时闪亮登场了~~~

顶尖实例

今昔关于数据地图的定义还不是很周到。作者以为,数据地图是一种将地理数据地理新闻有机结合的一种地理数据书上表达格局。数据地图应用地图来分析展示与地理地方相关的数量,以图示化的显示方式来呈现音讯,使得那种数据悉明方式更直观和明晰,更便于察觉规律,方便我们挖掘深层音信,更好的帮手决策。

一、行转列

要想正确的应用数据地图,弄懂“地图图层”那些概念尤其重点。实际上,“地图图层”类似于Photoshop中的图层:对于咱们现实中空间的发挥,实际上是透过分化图层去显示的,然后将那个图层叠加在一起实行表述(见图2)。在那之中,大约种种地图必要使用的图层是“底图”,它就像于PS中的背景图层,是地图中最基本的地貌、地貌数据及某个相关附属数据或消息(例如公路,河湖、山脉等),常见的有卫星图图层、三维立体图层及二维平面图等。

壹 、建立表格

图2数额地图的图层结构

ifobject_id(‘tb’)isnotnulldroptabletb

地图的行使指标差异,我们所要叠加的图层也有差别,除了最基本的底图,大家会有指向的呈现跟目的相平等的新闻内容(如差别商业形象、人口总结学音讯)。

go

图3是三种常见的数量地图突显方式。

createtabletb(姓名varchar(10),课程varchar(10),分数int)

图3两种常见的数码地图类型

insertintotbvalues(‘张三’,’语文’,74)

从图3中能够看看,那些数量地图的共同点在于:使用不一样的美术标示代表不一样类型的数据,不同水彩深浅程度(一般是鲁人持竿(由冷入暖)表示数量增多,)代表差异的程度/数量/类型

insertintotbvalues(‘张三’,’数学’,83)

2.数据地图的形似制作步骤

insertintotbvalues(‘张三’,’物理’,93)

数量地图的制作一般分为陆个经过,即上传数据、选拔使用(差别的地图选项)、出席周边生态和生成地图,详情见图4。

insertintotbvalues(‘李四’,’语文’,74)

图4数码地图的制作流程

insertintotbvalues(‘李四’,’数学’,84)

3.常用的数据地图制作工具

insertintotbvalues(‘李四’,’物理’,94)

脚下关于数据地图制作的工具有:Excel二〇〇九及以上版本(见图5)、GeoQ、地图汇、数据地图网、Target
Map、Geo Commons。用户上传包蕴地方新闻的Office
Excel数据,通过不难的操作,即可制作出各个大师级水准的数目地图。

go

图5 excel20第13中学的数据地图—三维地图

select*fromtb

② 、数据地图案例实际操作

go

1.连串背景

姓名       课程       分数

新近涉足了叁个有关孕婴童方面包车型大巴品种,须求整合面向0-一周岁的各类产品和服务供应商能源和成品/服务能源,协调外地点的裨益,一起服务于0-叁虚岁那么些母婴群体,项目实际细节不作详述。最近本项目标通力中外合作经营公司都有线下实体,所以大家任重(Ren Zhong)而道远在线下进展宣传和加大,且在新加坡市杨浦区开展试点,以“精益创业”的意见作辅导,力求以细小开支在短时间内神速试错,攻克测试中的难点且进展顺遂,将会向全市铺开,最后大面积扩张。


以上是体系的背景简介,作为一个将要运转的小框框试点项目,运行这边供给消除二个核心的题材:


目的用户在该区域内的分布怎么着?或是在什么地方找到那一个指标用户?

张三       语文        74

什么样有针对的去挑选合作集团?或是面向的中外合作经营集团要吻合什么原则?

张三       数学        83

本项目标线下推广该怎么陈设?

张三       物理        93

上面包车型大巴案例剖析主要围绕那一个难题展开。

李四       语文        74

2.现有多少

李四       数学        84

手中有2份数据:(1)2013-02~二零一六-03的新加坡杨浦区的婴儿幼儿儿降生数量(近2W条),数据量足够大,依据总结学的取样原理,具有一定代表性,有非常大的参考价值,见图6;(2)以及部分蓄意向在场本项指标候选协作卖家的数目(64家),见图7。

李四       物理        94

接下去,笔者将用那两份原始数据来做多维度的剖析,用以缓解上述一个难点。

 

图6用户原本数据(局部)

2、使用SQL Server
2000静态SQL

图7待显著中外合作经营集团地理音讯(局地)

–c

3.开挖用户基础音信

select姓名,

其一某些不是本文的要害,但为了保全总体分析进度的完整性,所以那边也顺带提一下,也算是前置的小“彩蛋”,有想清楚具体怎样操做的伴儿能够小窗小编。

 max(case课程when’语文’then分数else0end)语文,

获得多少之后,很关键的二个工作正是从在那之中尽只怕的榨干对项目有价值的数目,从中找到主要的端倪。对于用户的数码,作者重点从时间和地方那三个维度进行了尖锐解析。调用excel函数和透视表等工具,将表格做成了如下的样式:

 max(case课程when’数学’then分数else0end)数学,

图8处理后得到的新生婴儿数据新闻

 max(case课程when’物理’then分数else0end)物理

在图第88中学,我在时刻维度里做了纵深解析,将其拆分为“日期”和“时间”,在日期里解析出孩子的出世时间段、未来多大了和星座这多少个新闻。因为大家的品种面向的是0-3周岁的小儿,孩子将来多大那个维度能够使大家有效的筛选出指标用户,所以超出这么些岁数区间的用户就不在大家的设想范围以内,同时依照孩子年纪大小咱们得以有指向的引进适合的成品和劳务,比如奶粉适合推荐给一年左右的男女,这时正是母乳喂养转奶粉喂养的时刻节点;星座新闻方可当作大家的短信营销和快递礼品寄送时的话术参考(如“亲爱的双子座婴孩,*$#&^”)。

fromtb

4.数据地图的成立

groupby姓名

地点只是打通了时光维度的音信,上面就要加大招了。关于地理新闻的打通,做出可视化的多寡地图!

姓名       语文        数学        物理

在做事先,结合那2份数据所能提供的新闻,先将事先涉嫌的1个抽象的题材做尤其的具体化:


用户的地理分布如何展现?怎样依靠别的消息判断指标用户的市场股票总值?


同盟商家的地理区位选在什么地方相比适宜?须要考虑的成分是怎样?

李四        74         
84          94

能还是无法把对象用户地理分布、合作企业分布和别的救助新闻做在一张地图上,有助于更好的做决策?

张三        74         
83          93

线下推广在哪个地点、哪个时间段展开,活动意义会更好?

 

(1)用户的地理分布怎么着展现?怎么着依靠别的消息判断指标用户的市值?

3、使用SQL Server
2000动态SQL

本项目因为是多个母亲和婴儿能源整合项目,打包后的制品和服务客单价较高,绝对来说定位高端人群。同时,针对的是0-1虚岁的新生儿,所以大家的目的人群定位于高收入的85/902020年轻宝爸宝妈,育儿意识较强但无育儿经验,生活有程度,消费劲量强。在这之中,关键的表征是“高收入”、“消费劲量强”、“生活有品位”(见图9)。

–SQL
SEPAJEROVE路虎极光 两千动态SQL,指科目不止语文、数学、物理那三门科目。(以下同)

图9目的用户的基本特征

–变量按sql语言顺序赋值

大家先将用户的数据整理下,只留下用户姓名或编号及详细地址,注意在唯有区级和街道的地方前增进市级区划,如本项目在上海区举办,前边统OPPO上“北京市”,避防地图将坐标定位到同一名称的全国其余地区。

declare@sqlvarchar(500)

营造数据地图,笔者一般用到的工具是XXX(此处忽略工具名称,防止广告疑心,有亟待问的,后台回复“工具“二字即可获悉该工具名称),在那之中有不计其数作用皆避防费的,大型商业类项目也许要收钱。。。。。

set@sql=’select姓名’

挂号成为会员后,将整理过的多寡载入进去,分别按图第10中学标红的有的操作,得到的先河状态显示如图11:

select@sql=@sql+’,max(case课程when
”’+课程+”’ then分数else 0
end)[‘+课程+’]’

图10加载数据时的选项项目

from(selectdistinct课程fromtb)a–同from
tb group by课程,默许按学科名排序

图11数量地图早先呈现

set@sql=@sql+’ from tb group
by姓名’

以此工具载入数据后开头展现的是散点图,看起来某个糊涂,貌似发现不了规律,得不到如何有价值新闻。可是没什么,通过地图展现情势的例外,该难题能够获得缓解。

exec(@sql)

先是理解下该工具中的3个基本点选用—“地图图层”和“数据显示类型”。地图图层,上文曾涉及,可叠加展现;数据显示类型则是坐标的表现情势,本工具共计提供了7类数据表现方式(图12):

 

1)点符号:单个地理坐标呈现为点,只可以将拥有坐标标记成统一的样式,不能做成差异的图腾以示区分;

–使用isnull(),变量先鲜明动态部分

3)灯光图:跟点符号一样,只可以统一标志坐标,不一样的是,能够给点扩张泛光,即光晕,顾名思义叫做灯光图;

declare@sqlvarchar(8000)

4)等级符号:依照地球表面某一类数据的大大小小标记坐标,如A、B、C三处的销售额分别为750K、550K、400K,那么在等级上A>B>C,图示上坐标突显的美术大小从小到大依次为C、B、A。

select@sql=isnull(@sql+’,’,”)+’ max(case课程when
”’+课程+”’ then分数else 0
end) [‘+课程+’]’

5)聚合图:聚合图依据某一区域点的集中等射程度,自动算出这一区域集聚核心;

from(selectdistinct课程fromtb)asa      

6)热度/热力图:那个相比较广泛,依照区域间点的密集程度,一般按由浅到深的颜料来代表数据的从大到小、集中到稀疏。

set@sql=’select姓名,’+@sql+’ from tb group
by姓名’

7)图表图:跟等级符号类似,依据地表某一类数据的深浅程度来展现标示。

exec(@sql)

图12数据地图的7中坐标体现情势

姓名       数学        物理        语文

据书上说所独具的数据处境和档次需要,大家任重先生而道远选拔聚合图热力图三种坐标展现档次。接下来,小编将分别用到聚合图(图13)、热力图(图14),以及那种个地图图层的增大组合(图15)来突显指标用户的地理分布处境。


图13对象用户坐标的聚合图显示


图14对象用户坐标的热力图呈现

李四        84         
94          74

图15对象用户坐标的聚合图、热力图的联合展现

张三        83         
93          74

从以上的一个图能够见见,聚合图能够显得集中的小区域,但顺序区域间的三番五次性被打破,看起来相比孤立;热力图突显的区域较泛,各区域间的用户疏密一目驾驭,有一连性,但没能集中显示主要的地方;而在图15中,三种图层的有机结合刚刚把那两种图示方式的帮助和益处整合起来,最大限度的展现我们所急需的消息。

 

值得注意的是,能够每一天滑动鼠标,对地图的比重进行缩放,原则是覆盖整个指标区域(那里是杨浦区)、包涵邻近地区(那一个上面会涉及),以及尽可能的展现该区域的显要坐标(如交通枢纽、商业宗旨及首要性社区)。

4、使用SQL Server
2005静态SQL

在图15中,我们能够见到,目的用户较集中的板块有五角场商圈、黄兴商圈、江门商圈和九州商圈(图16),这多少个区域也是杨浦区重点的市级、区域级和社区级商圈。然后,大家依据采集来的信息明确了一一区域主要的楼盘音信,也就在用户所在住宅板块的信息(图17),那些住宅区将是我们线下进行宣传的首要地点。

select*fromtb pivot(max(分数)for课程in(语文,数学,物理))a

图16指标用户分布较为集中的多少个商圈

 

图17杨浦区各商圈覆盖区域及独立住宅区(局部)

5、使用SQL
Server 2005动态SQL

数量来源:搜房网

–使用stuff()

(2)合营卖家的地理区位选在哪儿相比适宜?需求考虑的因素是何等?

declare@sqlvarchar(8000)

至于目的合营商行的挑三拣四,大家关心以下几点:

set@sql=”  –伊始化变量@sql

走近指标消费人群;

select@sql=@sql+’,’+课程fromtbgroupby课程–变量多值赋值

附近的周边商业生态出色,目的人群日常光顾的区域;

set@sql=stuff(@sql,1,1,”)–去掉第二个’,’

辐射/覆盖区域较广。

set@sql=’select * from
tb pivot (max(分数)
for课程in
(‘+@sql+’))a’

1)临近目的消费人群

exec(@sql)

和下面一样的不二法门,载入合作商行的地理数据,以“类型符号”的款型显示专营商坐标信息,同时将分歧连串的生意人标记为分歧颜色的点,因为商人地方统一标准的显得颜色和地图底色、热力图颜色等存在叠加,为幸免消息呈现时过度杂乱,去掉聚合层,将地图的水彩呈现成深藕红,如图18:

 

图18对象用户分布和商人地理坐标显示

–或使用isnull()

在图1第88中学,我们选拔在杨浦区内,离目的用户不远,甚至有个别商户在虹口区,因此鲜明第一轮合作商行的大约地理范围,大概有25%的商贩得以保存。

declare@sqlvarchar(8000)

理所当然首先轮的筛选还不够细致,我们还要求进行下一轮的筛选。

–-获得课程集合

2)附近的广大商业生态卓绝,指标人群平日光顾的区域

select@sql=isnull(@sql+’,’,”)+课程fromtbgroupby课程           

这边须求用到该工具中长驱直入的
“开放数据”数据库,里面包蕴兴趣点数据(购物、餐饮、饭馆、公共设施、休闲游乐等)、品牌多少(种种消费品和劳务的品牌实体店分布)和人数经济公共交通数量(人口、住宅和畅通等)。

set@sql=’select * from
tb pivot (max(分数)
for课程in
(‘+@sql+’))a’

因为本项目涉嫌到0-三虚岁的母婴消费人群,大家要找到那么些指标用户会平常光顾的商业场面,重要是购物为主(如东方商厦、万达广场和百联又一城等)和母亲和婴儿用品实体店(奶粉店、泳儿游泳馆和婴儿幼儿儿衣服店等)。因母亲和婴儿用品点和购物为主都属于购物型场合,所以它们分别用紫藤色和茶绿色的购物车展现。因而获得图19:

exec(@sql)

图19指标用户分布和商贩地理坐标及常见商业生态(购物为主和母婴店)呈现

 

基于方便人民群众的设想(地理地点近),地图比例尺测算,采纳半径为5KM的限制待选合作商行的地理地点,图19中的红圈即为周边商业生态较好的区域。

② 、行转列结果加上总分、平均分

透过第②轮筛选,大家最后明显下来17个搭档公司。

1、使用SQL Server
2000静态SQL

(3)线下推广在哪个地点、哪个时间段进行,活动作效果果会更好?

–SQL
SERVER 2000静态SQL

个别显明好对象用户和同盟商家的地理分布后,接下去大家还索要用多少地图做2件事—首次地推的场地的分明和地推的时日的计划。那里能够用到大家耳熟能详而又不熟悉的2个工具—微信中的“城市热力图”。

select姓名,

1)分明目的地推区域

max(case课程when’语文’then分数else0end)语文,

现今大家都倡导精益创业,最长期内最小开销急迅试错,所以大家亟须先找到一到几个切入点,而不是周全铺开。因此大家须要这么些目的用户聚集区域中找到价值最高,也等于费用能力较强的用户聚集地,在邻近举行放大和宣传,力求打响第②枪。

max(case课程when’数学’then分数else0end)数学,

常识告诉大家,消费劲量强的用户,其所在区域的房价一般较高。因而,大家决定在房价较高的区域拓展第1推广,见图20

max(case课程when’物理’then分数else0end)物理,

图20对象用户分布&商户地理坐标&周边商业生态(购物为主和母亲和婴儿店)&各区块房价体现

sum(分数)总分,

在图20中,五角场附近的平均房价为58,570元,黄兴公园紧邻的平分房价为60,446元,为指标区域中房价最高的五个区域,依照上边的估算,那两处居住的用户消费劲量相较其余目标区域更强。此处地面推广的话,客车站的功能相比较精美(人群集散点),因此地推场地选在五角场大巴站香港和记黄埔股份两合公司兴公园地铁站。

cast(avg(分数*1.0)asdecimal(18,2))平均分

2)明确目的地推区域时间

fromtb

显明目的地推区域的大运,须求使用微信中附带的“城市热力图”成效,依次明确此处三日中几时和一天内哪个(些)时段的人工子宫破裂较多。该工具打开路径为:钱包→城市服务→城市热力图。

groupby姓名

在搜索框依次输入“五角场大巴站”和“黄兴公园大巴站”,得到图2① 、图22:

姓名       语文        数学        物理        总分        平均分

图21五角场面铁站及其周边人工早产时间独家情况


图22黄兴公园大巴站及其广大人工宫外孕时间分别意况


图2第11中学,五角场二十六日的人工早产量分布都比较均匀,因为这边有广大商店和商业场地(首若是购物为主):礼拜二到礼拜三,人工宫外孕量来自去信用合作社上班的白领人群;周末,人流量来自去商业场面消费的家庭人群。所以五角场这里的地推能够在星期六到周二进展;因小编写作此文的日子是周末,所以“前几日”代表的是周五,能够看来,早晨12:00到中午18:00间的人工早产量较大,虚拟的曲线,即日前到24:00里头也有3个小山顶,那是遵照历史数据估计出来的预测值。地推在大千世界的成效一般较好,所以选用12:00~18:00里头展开。

李四        74         
84          94          252         84.00

与上述推理类似,根据图22可见,黄兴公园大巴站的地推可选在周五,时间段能够选在15:00~18:00里面。与五角场差异的是,黄兴公园那边分明是“节假期经济”—集团较少,娱乐地方较多(黄兴公园、黄兴体育运动公园等),周末人工流产量明显比工作日多。

张三        74         
83          93          250         83.33

值得注意的是,时间段的挑选,会惨遭天气、节日假期日的熏陶,最佳在一到两周内细心关切天天/每一种日子段的人工不孕症数据意况,作好记录,按常理找到个中相比稳定的一天或有个别时刻段。

 

通过地点的操作和剖析,得到图23,那是经数据地图分析得出的终极结论:

2、使用SQL Server
2000动态SQL

图23由数量地图分析得来的结论

–SQL
SERVER 2000动态SQL

三、结语

declare@sqlvarchar(500)

从上边的莫过于案例能够看到,数据地图结合了数据消息和地理音信那八个音信维度,在考虑数量的还要,也全职了区位分析,从中能获得比表格更直观的可视化结果,当然那种综合分析必要大家有抬高的商业敏锐度和区位学知识,以便在运营分析中做出更可信的判定。

set@sql=’select姓名’

其它,数据地图还足以用在:

select@sql=@sql+’,max(case课程when
”’+课程+”’ then分数else 0
end)[‘+课程+’]’

购房选址、线下店铺选址;

from(selectdistinct课程fromtb)a

透过百度热力图和微信热力地图那样的实时工具,还足以在游历前先行掌握各景点的人工新生儿窒息意况,选拔适宜的旅行地方和远足时间。

set@sql=@sql+’,sum(分数)总分,cast(avg(分数*1.0)
as decimal(18,2))      平均分from tb
group by姓名’

物流行业的精准经营销售;

exec(@sql)

城市规划;

 

……

3、使用SQL Server
2005静态SQL

营业喵也意在大家用好网上支出的、免费的大数额工具,不光是升级工作绩效,更能由此选择那一个智能化学工业具让生活变得越来越便利。关于大数量工具的运用,小编运转喵现在还会三番五次享受给我们的。

selectm.*,n.总分,n.平均分

研商运行,说运行~微信公众号:运行喵是什么样炼成的,个人微信:g18818233178。

from

(select*fromtb pivot(max(分数)for课程in(语文,数学,物理))a)m,

(select姓名,sum(分数)总分,cast(avg(分数*1.0)asdecimal(18,2))平均分

fromtb

groupby姓名)n

wherem.姓名=n.姓名

 

4、使用SQL Server
2005动态SQL

–使用stuff()

declare@sqlvarchar(8000)

set@sql=”  –发轫化变量@sql

select@sql=@sql+’,’+课程fromtbgroupby课程–变量多值赋值

–同select
@sql = @sql + ‘,’+课程from
(select distinct课程from
tb)a

set@sql=stuff(@sql,1,1,”)–去掉第5个’,’

set@sql=’select m.* ,
n.总分,n.平均分from

(select
* from (select * from tb) a pivot (max(分数)
for课程in
(‘+@sql+’)) b) m
,

(select姓名,sum(分数)总分,
cast(avg(分数*1.0)
as decimal(18,2))平均分from tb
group by姓名)
n

where
m.姓名=
n.姓名’

exec(@sql)

 

–或使用isnull()

declare@sqlvarchar(8000)

select@sql=isnull(@sql+’,’,”)+课程fromtbgroupby课程

set@sql=’select m.* ,
n.总分,n.平均分from

(select
* from (select * from tb) a pivot (max(分数)
for课程in
(‘+

 @sql+’)) b) m
,

(select姓名,sum(分数)总分,
cast(avg(分数*1.0)
as decimal(18,2))平均分from tb
group by姓名)
n

where
m.姓名=
n.姓名’

exec(@sql)

 

二、列转行

一 、建立表格

ifobject_id(‘tb’)isnotnulldroptabletb

go

createtabletb(姓名varchar(10),语文int,数学int,物理int)

insertintotbvalues(‘张三’,74,83,93)

insertintotbvalues(‘李四’,74,84,94)

go

select*fromtb

go

姓名       语文        数学        物理



张三       74         
83          93

李四        74         
84          94

 

2、使用SQL Server
2000静态SQL

–SQL
SERVER 2000静态SQL。

select*from

(

 select姓名,课程=’语文’,分数=语文fromtb

 unionall

 select姓名,课程=’数学’,分数=数学fromtb

 unionall

 select姓名,课程=’物理’,分数=物理fromtb

)
t

orderby姓名,case课程when’语文’then1when’数学’then2when’物理’then3end

姓名       课程 分数



李四       语文 74

李四       数学 84

李四       物理 94

张三       语文 74

张三       数学 83

张三       物理 93

  

2、使用SQL Server
2000动态SQL

–SQL
SERVER 2000动态SQL。

–调用系统表动态生态。

declare@sqlvarchar(8000)

select@sql=isnull(@sql+’ union all
‘,”)+’
select姓名,
[课程]=’

+quotename(Name,””)+’ , [分数] =
‘+quotename(Name)+’ from tb’

fromsyscolumns

whereName!=’姓名’andID=object_id(‘tb’)–表名tb,不包蕴列名为真名的任何列

orderbycolid

exec(@sql+’ order
by姓名’)

go

 

3、使用SQL Server
2005静态SQL

–SQL
SERVER 2005动态SQL

select姓名,课程,分数fromtb unpivot (分数for课程in([语文],[数学],[物理])) t

 

4、使用SQL Server
2005动态SQL

–SQL
SERVER 2005动态SQL

declare@sqlnvarchar(4000)

select@sql=isnull(@sql+’,’,”)+quotename(Name)

fromsyscolumns

whereID=object_id(‘tb’)andNamenotin(‘姓名’)

orderbyColid

set@sql=’select姓名,[课程],[分数] from
tb unpivot ([分数] for
[课程]
in(‘+@sql+’))b’

exec(@sql)

该文章经过小编整理所得,欢迎转发,转发时请加上本文地址;本文基于签署 2.5中华夏族民共和国民代表大会洲许可协议发布,请勿演绎或用于商业目标,不过必须保留本文的签署张志涛

星座 1 青春就应该如此开放  游玩测试:三国一代什么人是你最棒的汉子!!  你只可以信的星座地下星座 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图