广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    数据库SQL如何使用透视表PIVOT,实现数据行转列

    来源:网络收集  点击:  时间:2024-04-04
    【导读】:
    在excel中有透视表的功能,在数据库中,也是有类似的语法的。比如,在供应商供货的订单表中,存储的是行记录,怎么才能按照供应商,按照年份汇总订单数量,并且实现行转列呢?这个时候就需要使用PIVOT函数了工具/原料moresqlserver方法/步骤1/7分步阅读

    创建一个临时表,用于演示sqlserver数据库中,如何使用透视表PIVOT,实现行数据转成列数据

    IF OBJECT_ID(tempdb..#tblVendor) IS NOT NULL DROP TABLE #tblVendor;

    CREATE TABLE #tblVendor(

    VendorName varchar(50), -- 供应商名称

    OrderNum int, -- 订单数量

    OrderYear int -- 订单年份

    );

    2/7

    往临时表中插入几行测试数据,模拟供应商供货的订单表

    insert into #tblVendor(VendorName, OrderNum, OrderYear) values(供应商1, 1000, 2018);

    insert into #tblVendor(VendorName, OrderNum, OrderYear) values(供应商1, 2000, 2017);

    insert into #tblVendor(VendorName, OrderNum, OrderYear) values(供应商1, 3000, 2019);

    insert into #tblVendor(VendorName, OrderNum, OrderYear) values(供应商2, 4000, 2019);

    3/7

    查询临时表中的测试数据

    select * from #tblVendor;

    4/7

    首先筛选“供应商1”的供货数据,可以直接使用where条件过滤即可

    select * from #tblVendor where VendorName = 供应商1;

    5/7

    筛选“供应商1”的供货数据,按照年份排序,可以使用order by语句即可

    select * from #tblVendor where VendorName = 供应商1 order by OrderYear;

    6/7

    按照供应商汇总订单数量,就需要使用group by语句

    select VendorName, OrderNumTotal = sum(OrderNum) from #tblVendor group by VendorName;

    7/7

    如果想要将行记录的供应商订单数量,转换为列数据,这个时候就需要使用透视表PIVOT语法了

    select VendorName,, ,

    from #tblVendor v

    pivot(

    sum(v.OrderNum) for v.OrderYear in(, , )

    )

    as result

    SQLPIVOT行转列透视表数据库
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_419110.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 11:00:27  耗时:0.028
    0.0284s