iT邦幫忙

0

請問 如何UNION 當中 DISTINCT重複序號,非常感謝

  • 分享至 

  • xImage

SELECT *
FROM (
(SELECT A.WORK_ORDER
,A.PALLET_NO
,A.SERIAL_NUMBER
,B.PROCESS_NAME
,'10'AS STEP
,'QC CODE'AS ACTION
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME or A.PROCESS_ID=F.RP_PROCESS_ID
then E.DEFECT_CODE
else 'PASS'
end as "DEFECT_CODE"
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME
then E.DEFECT_DESC
else null
end as "不良描述1"
,
A.OUT_PROCESS_TIME "OutProcessTime"
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME
then F.REPAIR_TIME
else null
end as "(Repair Time)"
,
Case
when A.OUT_PROCESS_TIME=C.REC_TIME or A.PROCESS_ID=F.RP_PROCESS_ID
then G.REASON_CODE
else null
end as "原因代碼(Reason Code)"
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME or A.PROCESS_ID=F.RP_PROCESS_ID
then G.REASON_DESC
else null
end as "原因描述(Reason Desc)"
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME or A.PROCESS_ID=F.RP_PROCESS_ID
then F.LOCATION
else null
end as "位置(Location)"
,
case
when A.OUT_PROCESS_TIME=C.REC_TIME or A.PROCESS_ID=F.RP_PROCESS_ID
then H.DUTY_DESC
else null
end as "責任描述(DutyDesc)"
FROM SAJET.G_SN_TRAVEL A
,SAJET.SYS_PROCESS B
,SAJET.G_SN_DEFECT C
, SAJET.SYS_DEFECT E
, SAJET.G_SN_REPAIR F
, SAJET.SYS_REASON G
, SAJET.SYS_DUTY H
WHERE A.PROCESS_ID = B.PROCESS_ID
AND A.SERIAL_NUMBER=C.SERIAL_NUMBER
AND E.DEFECT_ID=C.DEFECT_ID
AND F.RECID=C.RECID
AND F.REASON_ID=G.REASON_ID
AND F.DUTY_ID=H.DUTY_ID
AND B.PROCESS_ID NOT IN '100056'
AND B.PROCESS_NAME not in 'MAC MAP'
AND B.PROCESS_NAME NOT LIKE ('%REPAIR%')
AND A.SERIAL_NUMBER ='IXJ147241' )
UNION ALL
(SELECT A.WORK_ORDER
,A.PALLET_NO
,A.SERIAL_NUMBER
,B.PROCESS_NAME
,'10'AS STEP
,'Install component - S/N' AS ACTION
,C.BARCODE AS DEFECT_CODE
,null
,A.OUT_PROCESS_TIME
,null
,null
,null
,null
,null
FROM SAJET.G_SN_TRAVEL A,SAJET.SYS_PROCESS B , SAJET.G_BARCODE C
WHERE A.PROCESS_ID = B.PROCESS_ID
AND A.SERIAL_NUMBER = C.SERIAL_NUMBER
AND B.PROCESS_NAME ='MAC MAP'
AND A.SERIAL_NUMBER ='IXJ147241'))

!!![https://ithelp.ithome.com.tw/upload/images/20190320/20116136Bl3Rdbhnhw.png](https://ithelp.ithome.com.tw/upload/images/20190320/20116136Bl3Rdbhnhw.png)
使用 UNION ALL?(如果你是指裡面有重複資料依樣顯示出來
dean1121 iT邦新手 5 級 ‧ 2019-03-21 09:20:15 檢舉
我已經改為union嚕
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
rogeryao
iT邦超人 7 級 ‧ 2019-03-20 12:08:44

UNION ALL 改為 UNION

dean1121 iT邦新手 5 級 ‧ 2019-03-21 09:19:34 檢舉

非常感謝,幫忙

0
尼克
iT邦大師 1 級 ‧ 2019-03-20 12:18:09

union 與 union all 的結果
union 重複資料只顯示一筆.
union all 可以有重複資料

dean1121 iT邦新手 5 級 ‧ 2019-03-21 09:16:03 檢舉

了解~非常感謝

尼克 iT邦大師 1 級 ‧ 2019-03-21 09:20:03 檢舉

你這是Chroma的MES程式對吧!

dean1121 iT邦新手 5 級 ‧ 2019-03-21 09:21:34 檢舉

還要更舊---是SAJET

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-03-20 14:54:51

聽我一句勸
關鍵不是「DISTINCT」
你還是先弄清楚主管真正要的是什麼結果
以免白忙一場...

那個 SQL 指令寫那麼複雜/長
好不容易找出了這麼多筆資料
結果你只要留下一筆

就算只要留下一筆
就你貼上來的資料來猜
有幾個可能:
1.OutProcessTime 最新的那一筆(eg.最新/後狀態)
2.DEFECT_CODE 不是 PASS 那一筆(eg.測試未合格項目)

怎麼樣都比「DISTINCT 序號」
要來得有意義些

dean1121 iT邦新手 5 級 ‧ 2019-03-21 09:15:35 檢舉

我錯了~因為我亂掉了QQ
應該是說生產紀錄要把pass跟Fail狀況都要顯示出來,所以我會才分開寫,我在串的過程中序號一直重複導致我錯亂,抱歉

大概可以算是「當局者迷,旁觀者清」吧
/images/emoticon/emoticon06.gif

我要發表回答

立即登入回答