Excel透视:在表格中旋转两列而不总结值

我在Excel中使用这个查询下表:

SELECT "WORK_CENTER"."EQNO", "UD_DATA"."UD_COLS_ID", "WORK_CENTER"."CUSER1", "WORK_CENTER"."CUSER2", "WORK_CENTER"."CUSER3", "WORK_CENTER"."CUSER4", "WORK_CENTER"."CUSER5", "WORK_CENTER"."NUSER1", "WORK_CENTER"."NUSER2", "WORK_CENTER"."NUSER3", "WORK_CENTER"."NUSER4", "WORK_CENTER"."NUSER5", "UD_DATA"."CUSER" FROM "IQMS"."UD_DATA" "UD_DATA" FULL OUTER JOIN "IQMS"."WORK_CENTER" "WORK_CENTER" ON "UD_DATA"."PARENT_ID"="WORK_CENTER"."ID" WHERE "WORK_CENTER"."MFG_TYPE"='INJECTION' AND "UD_DATA"."UD_COLS_ID" IS NOT NULL ORDER BY "WORK_CENTER"."EQNO" 

结果

我得到下面的表格: 表

除了UD_COLS_ID(16,17,16,17 …)和CUSER(1000,test1,2000,test2 …..)之外,

期望的结果

但是我一直在Excel中试图做的是在CUSER(前一图像的最后一列)列上旋转UD_COLS_ID列,删除现在重复的行并得到 这个。

我已经尝试使用Excel数据透视表来做到这一点,但我似乎无法阻止它汇总值,例如我有列标题,EQNO和CUSER值为UD_COLS_ID。 但它不断总结价值领域,似乎没有办法不select呢? 图片

为此寻找修复不断引导我回到他们想要总结数据的例子。 而增加更多的行和列的值只是使其更难以遵循。

我应该怎么做呢?

你正在寻找更像这样的东西:

 SELECT WORK_CENTER.EQNO, WORK_CENTER.CUSER1, WORK_CENTER.CUSER2, WORK_CENTER.CUSER3, WORK_CENTER.CUSER4, WORK_CENTER.CUSER5, WORK_CENTER.NUSER1, WORK_CENTER.NUSER2, WORK_CENTER.NUSER3, WORK_CENTER.NUSER4, WORK_CENTER.NUSER5, UD_DATA_id_16.CUSER as ID_16, UD_DATA_id_17.CUSER as ID_17 FROM IQMS.WORK_CENTER WORK_CENTER INNER JOIN IQMS.UD_DATA UD_DATA_id_16 ON WORK_CENTER.ID=UD_DATA_id_16.PARENT_ID AND UD_DATA_id_16.UD_COLS_ID = 16 INNER JOIN IQMS.UD_DATA UD_DATA_id_17 ON WORK_CENTER.ID=UD_DATA_id_17.PARENT_ID AND UD_DATA_id_17.UD_COLS_ID = 17 WHERE WORK_CENTER.MFG_TYPE='INJECTION' ORDER BY WORK_CENTER.EQNO 

为什么? 那么很显然,UD_DATA在每个work_center行中有两行,但是您不希望这两行都与每个work_center行关联,因为这会将work_center行加倍。 这被称为笛卡尔产品。 如果ud_data中的Y行的work_center中有X行,则重复次数变为X * Y

你需要做的是将ud_data中每个“thing”的多行转换为单行。 您可以通过在Oracle中转移数据来完成此操作,也可以通过多次连接表来执行此操作,并指定将ud_data和work_center之间的关系降至1:1的关系。

具有简化列布局的work_center行:

 id, ud_data_id wc1, ud1 wc2, ud2 wc3, ud3 

一个ud_data行集合:

 id, thing, otherthing ud1, apple, 100 ud1, android, 101 ud2, apple, hello ud2, android, goodbye ud3, apple, jan-17 ud3, android, dec-25 

每个工作中心行的两个UD行需要成为一行。 您可以在join一次之前执行此操作,方法是将UD数据行转换为如下forms:

 id, applething, androidthing ud1, 100, 101 ud2, hello, goodbye ud3, jan-17, dec25 

或者你join了两次,每次只select你感兴趣的东西(在ID方面没有语法上的正确性 – 没有db会接受这个,但这不是要做的):

 work_center join ud_data on id=id AND ud_data.thing='apple' join ud_data on id=id AND ud_data.thing='android'