需要帮助在 MySQL 中对数据求和

发布于 2024-10-29 21:30:05 字数 1492 浏览 5 评论 0原文

我需要你的帮助来解决我的问题。我想对一些具有相同条件的数据进行求和。

这是我的数据:

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

I need your help to solve my problem. I want to SUM some data which have the same condition.

This my data:

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

I want to make some table information from the data above, then I'm use this query:

                    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

Then I get the result Like:

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

How should I do to make the result like:

Line    Model      Lot_no      Lot_Quantity     Merchandise
1       BO         001A        300              203

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江城子 2024-11-05 21:30:05

看起来您想要聚合数据,因此您需要按未求和的所有内容进行分组。您还需要删除 A.Range_sampling 并将其替换为您想要分组的任何衍生字段。 IIRC正确,MySQL不会让你在group by中使用别名。

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

编辑这可能会更干净一些

Looks like you want to aggregate the data, so you'd need to group by everything that's not being summed. You'll also need to remove the A.Range_sampling and replace it with any derivative fields you want to group by. IIRC correctly, MySQL will not let you use the alias in the group by.

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

EDIT This might be a little cleaner

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文