SQL SERVER pivot(行转列),unpivot(列转行)

【pivot】行转列:多行变一列

假设学生成绩表Score1

Name Subject Score
小张 语文 88
小花 数学 89
小张 数学 90

 

 

 

 

 

Name 语文 数学
小花 null 89
小张 88 90

 

 

 

 

1
2
--一定要有聚合函数, 如sum(Score)
select * from Score1 pivot (sum(Score) for Subject in (语文,数学)) b

 

【unpivot】列转行:一列变多行

假设学生成绩表Score2

Name Chinese Math
小花 89 93
小张 90 89

 

 

 

 

Name Subject Score
小花 Chinese 89
小花 Math 93
小张 Chinese 90
小张 Math 89

 

 

 

 

1
2
--Score,Subject 列名自定义,可以是任何想要的名字 Score1,Score2...Subject1,Subject2...
select * from Score2 unpivot (Score for Subject in (Chinese,Math)) b

 

posted @   木狼  阅读(1620)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示