select 
    A.MO_NUMBER,
    sum(decode(A.GROUP_NAME , 'PACKING', 1)) PACKING,
    sum(decode(A.GROUP_NAME, 'MAC INPUT', 1)) MAC_INPUT,
    sum(decode(A.GROUP_NAME, 'FT2', 1)) FT2,
    sum(decode(A.GROUP_NAME, 'AOI II', 1)) AOI_II,
    sum(decode(A.GROUP_NAME, 'MAC COMPARE', 1)) MAC_COMPARE,
    sum(decode(A.GROUP_NAME, 'ASY-1', 1)) ASY_1,
    sum(decode(A.GROUP_NAME, 'VISUAL INSPECT', 1)) VISUAL_INSPECT
from 
    SFISM4.R_WIP_TRACKING_T a    
    where A.MO_NUMBER='005700000405-1'
group by A.MO_NUMBER, A.GROUP_NAME

解决方案 »

  1.   

    group by 中去掉A.GROUP_NAME
    select 
        A.MO_NUMBER,
        sum(decode(A.GROUP_NAME , 'PACKING', 1)) PACKING,
        sum(decode(A.GROUP_NAME, 'MAC INPUT', 1)) MAC_INPUT,
        sum(decode(A.GROUP_NAME, 'FT2', 1)) FT2,
        sum(decode(A.GROUP_NAME, 'AOI II', 1)) AOI_II,
        sum(decode(A.GROUP_NAME, 'MAC COMPARE', 1)) MAC_COMPARE,
        sum(decode(A.GROUP_NAME, 'ASY-1', 1)) ASY_1,
        sum(decode(A.GROUP_NAME, 'VISUAL INSPECT', 1)) VISUAL_INSPECT
    from 
        SFISM4.R_WIP_TRACKING_T a    
        where A.MO_NUMBER='005700000405-1'
    group by A.MO_NUMBER
      

  2.   

    真不知道sum(decode())的用法啥时候能普及,每天都至少要帮人写一次
      

  3.   


    繼續請教
    SELECT
          A.MO_NUMBER,
         SUM (decode(A.GROUP_NAME , 'PTH INPUT', A.PASS_QTY )) INPUT_QTY,
         SUM (decode(A.GROUP_NAME , 'ICT', A.PASS_QTY )+ decode(A.GROUP_NAME , 'ICT1', A.PASS_QT) + decode(A.GROUP_NAME , 'ICT3', A.PASS_QTY) )OUTPUT_QTY,
         SUM (decode(A.GROUP_NAME , 'PRESS FIT', A.PASS_QTY )) PRESS_FIT,
         SUM (decode(A.GROUP_NAME , 'VISUAL INSPECT', A.PASS_QTY )) VISUAL_INSPECT,
         SUM (decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY )) D_XRAY
    FROM SFISM4.R_STATION_REC_T A
    WHERE A.MO_NUMBER='005700000351-1'
    group by A.MO_NUMBER第二段Decode 怎麼才能算出來,現在算是為空的
      

  4.   

    某一个decode返回值为空,空和其他值相加仍未空,用nvl处理下nvl(decode(   ),0)+nvl(decode(   ),0)+nvl(decode(   ),0)
      

  5.   

    或是把几个decode合并,用一个decode就行了
    decode(A.GROUP_NAME , 'ICT', A.PASS_QTY, 'ICT1', A.PASS_QT, 'ICT3', A.PASS_QTY)
      

  6.   

    建议多研究研究decde函数的意义和用法,这个问题就不存在了
      

  7.   

    不好意思 前輩,還有最后一個問題
    SELECT
          A.MO_NUMBER,
           sum    (
              nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0)/
              (nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0) 
              / nvl(decode(A.GROUP_NAME , '5D XRAY', A.FAIL_QTY , 'VISUAL INSPECT',A.FAIL_QTY),0)) 
               ) Yiled_Rate
    FROM SFISM4.R_STATION_REC_T A
    WHERE A.MO_NUMBER='005700000005-1'
    group by A.MO_NUMBER
    不知這段代碼放在上面那段里面怎麼樣才行得通,或者有別的方法,求教!!!!
    select round( ((62- 4)/62)*100,2) aa  from dual 這是要的結果
      

  8.   

    不好意思 前輩,還有最后一個問題
    SELECT
          A.MO_NUMBER,
           sum    (
              nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0)/
              (nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0) 
              / nvl(decode(A.GROUP_NAME , '5D XRAY', A.FAIL_QTY , 'VISUAL INSPECT',A.FAIL_QTY),0)) 
               ) Yiled_Rate
    FROM SFISM4.R_STATION_REC_T A
    WHERE A.MO_NUMBER='005700000005-1'
    group by A.MO_NUMBER
    不知這段代碼放在上面那段里面怎麼樣才行得通,或者有別的方法,求教!!!!
    select round( ((62- 4)/62)*100,2) aa  from dual 這是要的結果
    啥意思?没看懂
      

  9.   

    不好意思 ,就是直接做一個良率的運算
    例如:select round( ((62- 4)/62)*100,2) aa  from dual
    在SUM (Decode,.,.,.)中可以運算出來不
      

  10.   

    不好意思 前輩,還有最后一個問題
    SELECT
          A.MO_NUMBER,
           sum    (
              nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0)/
              (nvl(decode(A.GROUP_NAME , '5D XRAY', A.PASS_QTY , 'VISUAL INSPECT',A.PASS_QTY),0) 
              / nvl(decode(A.GROUP_NAME , '5D XRAY', A.FAIL_QTY , 'VISUAL INSPECT',A.FAIL_QTY),0)) 
               ) Yiled_Rate
    FROM SFISM4.R_STATION_REC_T A
    WHERE A.MO_NUMBER='005700000005-1'
    group by A.MO_NUMBER
    不知這段代碼放在上面那段里面怎麼樣才行得通,或者有別的方法,求教!!!!
    select round( ((62- 4)/62)*100,2) aa  from dual 這是要的結果
    啥意思?没看懂第二個/ 號就-號,打錯了
      

  11.   

    都写成这样nvl(sum(decode(  ))),然后再进行加减乘除运算