SQL SERVER 列转行
--列转行 CREATE TABLE tb(姓名 VARCHAR(10),语文 INT,数学 INT,物理 INT) INSERT INTO tb VALUES('张三',74,83,93) INSERT INTO tb VALUES('李四',74,84,94) select * from tb --使用静态sql实现 SELECT * FROM ( SELECT 姓名,课程='语文',分数=语文 FROM tb UNION ALL SELECT 姓名,课程='数学',分数=数学 FROM tb UNION ALL SELECT 姓名,课程='物理',分数=物理 FROM tb ) t ORDER BY 姓名,CASE 课程 WHEN '语文' THEN 1 WHEN '数学' THEN 2 WHEN '物理' THEN 3 end --使用unpivot函数 select 姓名,课程,分数 from tb unpivot ( 分数 for 课程 in ([语文],[数学],[物理]) ) t --使用动态sql DECLARE @sql VARCHAR(8000) SELECT @sql=isnull(@sql+' union all ','')+' select 姓名, [课程]=' +quotename(Name,'''')+' , [分数] = '+quotename(Name)+' from tb' FROM syscolumns WHERE Name!='姓名' AND ID=object_id('tb')--表名tb,不包含列名为姓名的其他列 ORDER BY colid exec(@sql+' order by 姓名') go select quotename('ab[]cde')
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
2020-07-08 c#之线程通信