博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL server 动态行转列
阅读量:6168 次
发布时间:2019-06-21

本文共 2407 字,大约阅读时间需要 8 分钟。

用聚合函数配合CASE语句实现行转列功能:

现在分享一下具体实现代码:

转换前效果:

PlanName PlanType PlanLimit
计划1 计划类型1 RMB 1,000,000
计划1 计划类型2 RMB 1,000,000
计划1 计划类型3 RMB 1,000,000
计划2 计划类型1 RMB 1,000,000
计划2 计划类型2 RMB 1,000,000
计划2 计划类型3 RMB 1,000,000
计划3 计划类型1 RMB 1,000,000
计划3 计划类型2 RMB 1,000,000
计划3 计划类型3 RMB 1,000,000

 

 

 

 

 

 

 

 

 

1、静态实现行转列

1 with main as 2 ( 3     select '计划1' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit 4     union all 5     select '计划1' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit 6     union all 7     select '计划1' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit 8     union all 9     select '计划2' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit10     union all11     select '计划2' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit12     union all13     select '计划2' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit14     union all15     select '计划3' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit16     union all17     select '计划3' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit18     union all19     select '计划3' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit20 )21 select PlanType as [计划]22     ,'计划1'=max(case PlanName when '计划1' then PlanLimit else null end)23     ,'计划2'=max(case PlanName when '计划2' then PlanLimit else null end)24     ,'计划3'=max(case PlanName when '计划3' then PlanLimit else null end)25 from main 26 where 1=127 group by PlanType

2、动态实现行转列

1 -- ============================================= 2 -- Author:        
3 -- Create date: <2016/04/27> 4 -- Description:
<查询sp_annetest表的数据>
5 -- ============================================= 6 CREATE PROCEDURE [dbo].[SP_AnneTest] 7 ( 8 ) 9 AS10 declare @sql varchar(8000)11 BEGIN12 set @sql=''13 14 select @sql=@sql+','+''''+[PlanName]+''''+'=max(case PlanName when '''+[PlanName]+''' then PlanLimit else null end)'15 from main16 where 1=117 group by PlanType18 set @sql='select PlanType as [''计划'']'+@sql+' 19 from main 20 where 1=121 group by PlanType'22 23 print @sql24 exec(@sql)25 26 END27 GO

 

实现效果:

计划 计划1 计划2 计划3
计划类型1 RMB 1,000,000 RMB 1,000,000 RMB 1,000,000
计划类型2 RMB 1,000,000 RMB 1,000,000 RMB 1,000,000
计划类型3 RMB 1,000,000 RMB 1,000,000 RMB 1,000,000

 

 

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

你可能感兴趣的文章
CRM安装(二)
查看>>
Eclipse工具进行Spring开发时,Spring配置文件智能提示需要安装STS插件
查看>>
NSURLCache内存缓存
查看>>
jquery click嵌套 事件重复注册 多次执行的问题
查看>>
Dev GridControl导出
查看>>
开始翻译Windows Phone 8 Development for Absolute Beginners教程
查看>>
Python tablib模块
查看>>
站立会议02
查看>>
Windows和Linux如何使用Java代码实现关闭进程
查看>>
0428继承性 const static
查看>>
第一课:从一个简单的平方根运算学习平方根---【重温数学】
查看>>
NET反射系统
查看>>
Oracle12C本地用户的创建和登录
查看>>
使用JS制作一个鼠标可拖的DIV(一)——鼠标拖动
查看>>
HDU problem 5635 LCP Array【思维】
查看>>
leetcode10. 正则表达式匹配
查看>>
redis常用命令--zsets
查看>>
springcloud--Feign(WebService客户端)
查看>>
网络攻击
查看>>
sorting, two pointers(cf div.3 1113)
查看>>