Sql Server 行转列

Sql Server行转列示例:

复制代码
--创建部门表,写入数据
create table Table_Dep(
depid varchar(10),
dname varchar(50)
)
insert into Table_Dep values('1','国内业务一部')
insert into Table_Dep values('2','国内业务二部')
insert into Table_Dep values('3','国内业务三部')
insert into Table_Dep values('4','国际业务部')

--创建业绩表,写入数据
create table Table_Yeji(
mon varchar(20),
depid varchar(20),
yj varchar(30)
)
insert into Table_Yeji values('一月份','1','10')
insert into Table_Yeji values('一月份','2','10')
insert into Table_Yeji values('一月份','3','5')
insert into Table_Yeji values('二月份','2','8')
insert into Table_Yeji values('二月份','4','9')
insert into Table_Yeji values('三月份','3','8')

--输出结果:部门、名称、一月份、二月份、三月份
select A.depid,A.dname,B.一月份,B.二月份,B.三月份 from Table_Dep A left join 
(select depid,
MAX(case mon when'一月份' then yj else null end)'一月份',
MAX(case mon when'二月份' then yj else null end)'二月份',
MAX(case mon when'三月份' then yj else null end)'三月份'
from Table_Yeji group by depid) B on A.depid=B.depid

--pivot函数行转列
select A.depid,A.dname,B.一月份,B.二月份,B.三月份 from Table_Dep A left join 
(select * from Table_Yeji pivot(max(yj) for mon in(一月份,二月份,三月份))tb) B on A.depid=B.depid
复制代码

 

posted @   Jackie Hao  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示