以下的文章主要描述的是SQL Server行转列在什么情况下可能被应用的道,你如果对其有兴趣的话你就可以点击以下的文章进行观看了,以下的文章将会揭开它的神秘面纱,以下的文章将会揭开它的神秘面纱。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站建设、外贸营销网站建设、科尔沁右翼中网络推广、小程序制作、科尔沁右翼中网络营销、科尔沁右翼中企业策划、科尔沁右翼中品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供科尔沁右翼中建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
有些时候还是要用到SQL Server行转列,比如下面的数据:
一般的表结构大多会这么设计,通过关联查询就可以得出上面的数据(客运量就随便123了,非常时期以防恐怖分子)
不用说,大家也明白要得到下面的数据:
列数不多的话一般可以这样,也是网上比较经典的写法
Select 时间,
sum(case when 线路='1号线' then客运量 end) As '1号线' ,
sum(case when 线路='2号线' then客运量 end) As '2号线' ,
sum(case when 线路='5号线' then客运量 end) As '5号线' ,
......
Fromtable Group By 时间
在SQL Server2005里可以用Pivot关键字来操作,如下:
- declare@Strnvarchar(max)
- set@str='select时间'
- select@str=@str+',['+线路+']'from#Tgroupby线路
- set@str=@str+'FROM(
SELECT时间,客运量,线路
FROM#T)AST
PIVOT(sum(客运量)FOR线路IN
('
select@str=@str+'['+线路+'],'from#Tgroupby线路
set@str=left(@str,Len(@str)-1)
set@str=@str+'))ASthePivot
ORDERBY时间'
declare@T1table(datedatetime,一号线float,二号线float,五号线float,十号线float,十三号线float,八通线float,奥运支线float,机场线float)
- INSERTINTO@T1exec(@str)
- SELECT*FROM@T1
- droptable#T
SQL Server行转列上面的语句如果运行提示不支持pivot关键字的话(一般SQL2000库导入到SQL2005可能出现这问题),执行下这句:EXEC sp_dbcmptlevel 数据库名称,90
为了方便看,字段改成中文了,其中#T表的数据就是最上面***张图的数据(只要基础数据源组织成这样的就行)
把处理后的数据存放在表变量@T1中(当然临时表也行),因为还要和其他表进行关联,导出一张大表,如下(表的部分列):
大致就这样吧
处理的方式应该还有其它的,仅供参考。
网页名称:SQLServer行转列的什么情况下被用?
网页地址:http://www.shufengxianlan.com/qtweb/news48/41098.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联