发布:2018/12/19 17:50:24作者:管理员 来源:本站 浏览次数:1353
ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行A,PIVOT 语法 返回顶部 |
PIVOT 提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单和更具可读性。有关 PIVOT 语法的完整说明,请参阅 FROM (Transact-SQL)。
以下是带批注的 PIVOT 语法。
SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM (<生成数据的 SELECT 查询>) AS <源查询的别名> PIVOT ( <聚合函数>(<要聚合的列>) FOR [<包含要成为列标题的值的列>] IN ( [第一个透视的列], [第二个透视的列], ... [最后一个透视的列]) ) AS <透视表的别名> <可选的 ORDER BY 子句>;
B,PIVOT 示例1返回顶部 |
--A1、传统 case 方法 select username as '姓名' ,max(case [subject] when '语文' then score else 0 end) as '语文' ,max(case [subject] when '数学' then score else 0 end) as '数学' ,max(case [subject] when '英语' then score else 0 end) as '英语' ,max(case [subject] when '生物' then score else 0 end) as '生物' from StudentScores group by username;
-- A2:PIVOT 方法 select username as '姓名',[语文],[数学],[英语],[生物] from StudentScores a PIVOT ( max(a.score) for a.subject in([语文],[数学],[英语],[生物]) )b;
C,UNPIVOT 示例1返回顶部 |
go -- ========================== -- 工程详细表,ByYuanbo -- ========================== -- drop table ProjectDetail; create table ProjectDetail ( projectName varchar(20), --功能名称 overseaSupply int, --海外供应商供给数量 nativeSupply int, --国内供应商供给数量 southSupply int, --南方供应商供给数量 northSupply int --北方供应商供给数量 ); go -- 01、添加测试数据 insert into ProjectDetail(projectName,overseaSupply,nativeSupply,southSupply,northSupply) values('A', 100, 200, 50, 50); insert into ProjectDetail(projectName,overseaSupply,nativeSupply,southSupply,northSupply) values('B', 200, 300, 150, 150); insert into ProjectDetail(projectName,overseaSupply,nativeSupply,southSupply,northSupply) values('C', 159, 400, 20, 320); go -- 02、查询数据 select * from ProjectDetail; -- P1:查询项目每个供应商的供给数量? -- A1:UNPIVOT 方法 select b.projectName,b.supplier,b.supllyNumber from ( select projectName,overseaSupply,nativeSupply,southSupply,northSupply from ProjectDetail) a UNPIVOT ( supllyNumber for supplier in(overseaSupply,nativeSupply,southSupply,northSupply) )b;
-- P1:查询项目每个供应商的供给数量? -- A1:UNPIVOT 方法 select b.projectName,b.supplier,b.supllyNumber from ( select projectName,overseaSupply,nativeSupply,southSupply,northSupply from ProjectDetail) a UNPIVOT ( supllyNumber for supplier in(overseaSupply,nativeSupply,southSupply,northSupply) )b;
D,PIVOT 示例2返回顶部 |
E,返回顶部 |
F,返回顶部 |
G,相关资源返回顶部 |
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4