在excel中有透视表的功能 , 在数据库中 , 也是有近似的语法的 。 好比 , 在供给商供货的订单表中 , 存储的是行记实 , 怎么才能按照供给商 , 按照年份汇总订单数目 , 而且实现行转列呢?这个时辰就需要利用PIVOT函数了
需要这些哦
sqlserver
方式/
1建立一个姑且表 , 用于演示sqlserver数据库中 , 若何利用透视表PIVOT , 实现行数据转当作列数据
IF OBJECT_ID('tempdb..#tblVor') IS NOT NULL DROP TABLE #tblVor;
CREATE TABLE #tblVor(
VorName varchar(50), -- 供给商名称
OrderNum int, -- 订单数目
OrderYear int -- 订单年份
);
文章插图
2往姑且表中插入几行测试数据 , 模拟供给商供货的订单表
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 1000, 2018);
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 2000, 2017);
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 3000, 2019);
【数据库SQL如何使用透视表PIVOT,实现数据行转列】insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商2', 4000, 2019);
文章插图
3查询姑且表中的测试数据
select * from #tblVor;
文章插图
4起首筛选“供给商1”的供货数据 , 可以直接利用where前提过滤即可
select * from #tblVor where VorName = '供给商1';
文章插图
5筛选“供给商1”的供货数据 , 按照年份排序 , 可以利用order by语句即可
select * from #tblVor where VorName = '供给商1' order by OrderYear;
文章插图
6按照供给商汇总订单数目 , 就需要利用group by语句
select VorName, OrderNumTotal = sum(OrderNum) from #tblVor group by VorName;
文章插图
7若是想要将行记实的供给商订单数目 , 转换为列数据 , 这个时辰就需要利用透视表PIVOT语法了
select VorName,[2017], [2018], [2019]
from #tblVor v
pivot(
sum(v.OrderNum) for v.OrderYear in([2017], [2018], [2019])
)
as result
文章插图
以上内容就是数据库SQL如何使用透视表PIVOT , 实现数据行转列的内容啦 , 希望对你有所帮助哦!
推荐阅读
- sqlite使用介绍一:常有命令
- 数据库如何将一列的值,拼接为逗号分隔的字符串
- 华南农业大学是什么级别的学校,全国排名如何?
- 苹果手机微信如何添加公众号
- 中国化工专业最好的大学是哪几所?就业率如何?
- 如何训练赛鸽在野外过夜
- 如何正确选择兔兔饲料
- 普洱茶芽芽介绍,如何开茶叶店
- 如何正确的认知自我
- 喝什么茶配什么茶点?,如何炒茶叶