我需要你的帮助来解决我的问题。我想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 :(得分: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
编辑这可能会更清晰