BI-SQL丨行列转换

alt

行列转换

行列转换,在SQL Server中属于常见的基本操作。无论是搭建数仓,还是通过PowerBI进行数据分析,我们总会接触到各式各样的数据源,而在这些数据源中,除了标准的大型数仓外,我们很少能够拿到标准规范的数据表结构。 接触最多的,往往是大宽表,这就需要我们将大宽表转换为标准的二维表结构,即实现表结构的降维操作,也就是PowerBI中的***。

函数介绍

PIVOT语法:

PIVOT (
  < 聚合函数 >(要聚合的列) FOR < 转换的列 > IN (转换的列的值列表)
) AS 转换后的表名

UNPIVOT语法:

UNPIVOT (
  < 聚合函数 >(要聚合的列) FOR < 转换的列 > IN (转换的列的值列表)
) AS 转换后的表名

PIVOT函数,通常用来将表结构从二维表转换为大宽表,而UNPIVOT则恰恰相反,通常是用来将大宽表转换为二维表。

使用实例

案例数据:

alt

alt

在白茶的本机数据库中,存在名为CaseData的数据库,存在名为“Test1”的二维表和名为“Test2”大宽表。

例子1:

将二维表,转换为大宽表。

SELECT
    *
FROM
    Test1 PIVOT (
        SUM(Sales) FOR Product IN (女装, 男装, 童装, 鞋子, 裤子)
    ) AS NewTable

结果如下:

alt

当然,除了PIVOT函数以外,我们还可以使用常规的计算方法。

SELECT
    日期,
    SUM(
        CASE
            WHEN Product = N'女装' THEN Sales
            ELSE 0
        END
    ) AS '女装',
    SUM(
        CASE
            WHEN Product = N'男装' THEN Sales
            ELSE 0
        END
    ) AS '男装',
    SUM(
        CASE
            WHEN Product = N'童装' THEN Sales
            ELSE 0
        END
    ) AS '童装',
    SUM(
        CASE
            WHEN Product = N'鞋子' THEN Sales
            ELSE 0
        END
    ) AS '鞋子',
    SUM(
        CASE
            WHEN Product = N'裤子' THEN Sales
            ELSE 0
        END
    ) AS '裤子'
FROM
    Test1
GROUP BY
    日期

结果如下:

alt

例子2:

将大宽表,转换为二维表。

SELECT
    *
FROM
    Test2 UNPIVOT (
        Sales FOR Product IN (女装, 男装, 童装, 鞋子, 裤子)
    ) AS NewTable

结果如下:

alt

同理,除了UNPIVOT函数以外,列转行也是有其他办法的。

SELECT
    日期,
    N'女装' AS "Product",
    女装 AS Sales
FROM
    Test2
UNION
SELECT
    日期,
    N'男装' AS "Product",
    男装 AS Sales
FROM
    Test2
UNION
SELECT
    日期,
    N'童装' AS "Product",
    童装 AS Sales
FROM
    Test2
UNION
SELECT
    日期,
    N'鞋子' AS "Product",
    鞋子 AS Sales
FROM
    Test2
UNION
SELECT
    日期,
    N'裤子' AS "Product",
    裤子 AS Sales
FROM
    Test2

结果如下:

alt

alt alt

这里是白茶,一个PowerBI的初学者。 alt

Fabric丨白茶 文章被收录于专栏

数据分析进阶之路,带你深入了解可视化技巧。

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务