如何取消透视表之类的交叉表?

Posted

技术标签:

【中文标题】如何取消透视表之类的交叉表?【英文标题】:How to unpivot a crosstab like table? 【发布时间】:2013-08-30 15:33:57 【问题描述】:

从 excel 文档导入数据后,我最终得到了一个如下所示的表格(非常类似于数据透视表):

EMPLOYEEID | SKILL1 | SKILL2 | SKILL 3
---------------------------------------
   emp1    |    1   |        |    3
   emp2    |    2   |    3   |    
   emp3    |        |        |    1
   emp4    |        |    2   |    3

在我的数据库中,我有另一个表,其中存储了每个技能的每个级别的知识 每个员工:

EMPLOYEEID |  SKILLID  | LEVEL_OF_KNOWLEDGE
------------------------------------------
   emp1    |  SKILL1  |         1   
   emp1    |  SKILL3  |         3       
   emp2    |  SKILL1  |         2
   emp2    |  SKILL2  |         3
   emp3    |  SKILL3  |         1   
   emp4    |  SKILL2  |         2
   emp4    |  SKILL3  |         3

我的问题是,如何从第一个表中检索数据并将其存储在第二个表中?是否可以仅使用 Access 查询或让我处理 vba?

我找到了很多相反的例子(转动第二个表来得到第一个),但我还没有找到解决这种情况的方法。

【问题讨论】:

我在这篇文章中回答这个问题***.com/questions/7255423/… 【参考方案1】:

当然

SELECT EmployeeID, "SKILL1" AS SkillID, SKILL1 AS Level_OF_Knowledge WHERE SKILL1 IS NOT NULL
UNION ALL SELECT EmployeeID, "SKILL2" AS SkillID, SKILL2 AS Level_OF_Knowledge  WHERE SKILL2 IS NOT NULL
UNION ALL SELECT EmployeeID, "SKILL3" AS SkillID, SKILL3 AS Level_OF_Knowledge  WHERE SKILL3 IS NOT NULL

*为第一个表中的每个附加列重复最后一行

【讨论】:

这可能是他排除 Null 评级后的答案。 如果我像@HansUp 所说的那样取出 Null 值,这正是我想要的。感谢您的快速回答:)

以上是关于如何取消透视表之类的交叉表?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除透视表中的很多汇总行

快速取消数据透视表的分类汇总行和总计行

pandas pivot_table透视表crosstab交叉表aggfunc函数详解及实战

带有交叉表的 Postgres 数据透视表

excel如何将数据透视表中的汇总项去掉?

数据透视表和数据交叉表