2011-04-05 92 views
0

我需要你的幫助來解決我的問題。我想要SUM一些具有相同條件的數據。在MySQL中需要幫助SUM數據

這是我的數據:

Line Model Serial Lot_no  Range 
1  BO  0001  001A  096x0001-096x0100 
1  BO  0002  001A  096x0001-096x0100 
1  BO  0101  001A  096x0101-096x0200 
1  BO  0202  001A  096X0201-096X0203 

我想要從上面的數據表中的一些信息,然後我使用這個查詢:

    SELECT A.Line, A.Model, 
          A.Lot_no,B.Lot_Quantity, 
          IF(RIGHT(A.Range_sampling,4)='0000',10000, 
          RIGHT(A.Range_sampling,4))-MID(Range_sampling,5,4)+1 
          AS Merchandise 
        FROM inspection_report A 
        LEFT JOIN prod_sch B 
        ON A.Line= B.Line_Name AND A.Model = B.Model_Code 
        AND A.Lot_no= CONCAT(LPAD(CAST(B.Lot_No_ AS CHAR),3,'0'),'A') 
        GROUP BY A.Line, A.Model,A.Range_sampling 

然後我得到的結果一樣:

Line Model  LOt_no  Lot_Quantity Merchandise 
1  BO  001A  300    100 //from 096X0001-096X0100 
1  BO  001A  300    100 //from 096X0101-096X0200 
1  BO  001A  300    3  //from 096X0201-096X0203 

我該怎麼做才能做出如下結果:

Line Model  Lot_no  Lot_Quantity  Merchandise 
1  BO   001A  300    203 

回答

0

看起來你想要彙總數據,所以你需要將所有未被彙總的內容進行分組。您還需要刪除A.Range_sampling並將其替換爲您想要分組的任何派生字段。 IIRC正確,MySQL不會讓你使用組中的別名。

SELECT Line,Model,Lot_no, Lot_Quantity, SUM(Merchandise) FROM (
       SELECT A.Line, A.Model, 
         A.Lot_no,B.Lot_Quantity, 
         IF(RIGHT(A.Range_sampling,4)='0000',10000, 
         RIGHT(A.Range_sampling,4))-MID(Range_sampling,5,4)+1 
         AS Merchandise 
       FROM inspection_report A 
       LEFT JOIN prod_sch B 
       ON A.Line= B.Line_Name AND A.Model = B.Model_Code 
       AND A.Lot_no= CONCAT(LPAD(CAST(B.Lot_No_ AS CHAR),3,'0'),'A') 

     ) 
      GROUP BY Line,Model,Lot_no, Lot_Quantity 

編輯這可能是有點清潔

+0

我仍然獲得單獨的結果。 – klox 2011-04-05 04:24:09

+0

先嚐試一個簡單的查詢,如SELECT A.Line,SUM(CAST(RIGHT(A.Range_sampling,4)) - MID(Range_sampling,5,4)+1 AS INT)) GROUP BY A.Line。那樣有用嗎? – dfb 2011-04-05 04:28:20

+0

好的,謝謝,你編輯的答案適合我。 – klox 2011-04-05 04:55:58