首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel数据轴:在不总结值的情况下对表中的两列进行枢轴

Excel数据轴:在不总结值的情况下对表中的两列进行枢轴
EN

Stack Overflow用户
提问于 2017-07-25 10:31:53
回答 1查看 270关注 0票数 1

下表在excel中使用此查询:

代码语言:javascript
复制
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,test2 1,2000,test2.)

期望结果

但是,我在Excel中试图做的是在CUSER(上一张图片中的最后一列)列上的UD_COLS_ID列支点,删除现在重复的行,然后获取

我尝试过使用EXECLE尔斯枢轴表来完成这个任务,但我似乎无法阻止它汇总列标题的UD_COLS_ID、EQNO和CUSER作为值。但它不断总结价值字段,似乎没有办法不选择它吗?

搜索这方面的修补程序会使我回到他们想要总结数据的示例中。而且,向行和列添加更多的值只会使跟踪变得更加困难。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 11:08:40

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

代码语言:javascript
复制
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行都有2行,但您不希望这两行都与每个work_center行关联,因为这将使work_center行加倍。这叫做笛卡尔积。如果work_center中对于ud_data中的Y行有X行,则重复的数目变为X*Y,情况会变得更糟

您需要做的是将ud_data中每个“东西”中的多行转换为单行。您可以通过在oracle中旋转数据来做到这一点,或者通过多次加入表来做到这一点,并指定将ud_data和work_center之间的关系降低到1:1的内容。

具有简化列布局的work_center行:

代码语言:javascript
复制
id, ud_data_id
wc1, ud1
wc2, ud2
wc3, ud3

ud_data行集:

代码语言:javascript
复制
id, thing, otherthing
ud1, apple, 100
ud1, android, 101
ud2, apple, hello
ud2, android, goodbye
ud3, apple, jan-17
ud3, android, dec-25

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

代码语言:javascript
复制
id, applething, androidthing
ud1, 100, 101
ud2, hello, goodbye
ud3, jan-17, dec25

或者加入两次,每次只选择您感兴趣的内容(在ID方面没有语法正确-没有db会接受这一点,但这不是要点):

代码语言:javascript
复制
work_center
join ud_data on id=id   AND ud_data.thing='apple'
join ud_data on id=id   AND ud_data.thing='android'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45300695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档