SQL 创建稀疏矩阵,你想创建一个稀疏矩阵,把 EMP
表的 DEPTNO
和 JOB
列变换成如下所示的结果集。
SQL 创建稀疏矩阵 问题描述
你想创建一个稀疏矩阵,把 EMP
表的 DEPTNO
和 JOB
列变换成如下所示的结果集。
SQL 创建稀疏矩阵 解决方案
使用一组 CASE
表达式创建一个稀有矩阵,实现从行到列的变换。
SQL 创建稀疏矩阵 扩展知识
要把 DEPTNO
和 JOB
值从行形式变换成列形式,只要使用 CASE
表达式把全部可能的值逐一评估一遍即可。这是本解决方案的要点所在。除此之外,如果希望删除一些 Null
行,以便让整个报表显得“紧密”一些,我们还需要按照某个列做分组操作。例如,使用窗口函数 ROW_NUMBER OVER
为每个 DEPTNO
对应的每个员工生成一个序号,然后使用聚合函数 MAX
删除一些 Null
值。