SQL中的PIVOT和UNPIVOT操作有哪些用途?

我想了解一下SQL中PIVOT和UNPIVOT操作的具体用途。我知道PIVOT操作是将多行转化为多列,UNPIVOT操作则是将多列转化为多行,但是在实际应用中,它们适用于哪些场景呢?如果有具体的示例或案例的话会更好。希望有经验丰富的SQL大佬可以帮忙解答一下这个问题,非常感谢!

提问时间:2023-07-13 11:23:00 编辑时间:2023-07-13 11:23:02 提问者: Cloudless_Sky
  • 默默
    2

    PIVOT操作可以将行数据转换为列数据,主要用于数据的交叉表查询,例如将销售数据按照不同的商品分类进行展示。UNPIVOT操作将列数据转换为行数据,主要用于对数据的透视操作,例如将财务报表中的不同科目数据展示在一列中。具体示例可参考以下代码片段:

    -- PIVOT操作 SELECT * FROM ( SELECT product, month, revenue FROM sales ) t PIVOT ( SUM(revenue) FOR month IN ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec]) ) p

    -- UNPIVOT操作 SELECT product, month, revenue FROM ( SELECT [Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec] FROM sales ) t UNPIVOT ( revenue FOR month IN ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec]) ) p (month, revenue)

    回答时间:2023-07-13 11:23:05