下表在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,test2 1,2000,test2.)
期望结果
但是,我在Excel中试图做的是在CUSER(上一张图片中的最后一列)列上的UD_COLS_ID列支点,删除现在重复的行,然后获取

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

搜索这方面的修补程序会使我回到他们想要总结数据的示例中。而且,向行和列添加更多的值只会使跟踪变得更加困难。
我该怎么做呢?
发布于 2017-07-25 11:08:40
你在寻找更像这样的东西:
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行:
id, ud_data_id
wc1, ud1
wc2, ud2
wc3, ud3ud_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行需要变成一行。您可以在加入一次之前执行此操作,方法是将UD数据行旋转为如下所示:
id, applething, androidthing
ud1, 100, 101
ud2, hello, goodbye
ud3, jan-17, dec25或者加入两次,每次只选择您感兴趣的内容(在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'https://stackoverflow.com/questions/45300695
复制相似问题