在MySQL中需要有关SUM数据的帮助

时间:2011-04-05 04:12:19

标签: mysql aggregate

我需要你的帮助来解决我的问题。我想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

1 个答案:

答案 0 :(得分: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

编辑这可能会更清晰