Page 1 of 1

ต้องการผล sum ที่ถูกต้องครับ

Posted: Mon Jul 17, 2023 2:41 pm
by nagatobimaru
ผมอยากเขียน join กันออกมาใน table แบบในไฟล์ภาพที่แนบครับ

Code: Select all

SELECT (SELECT CASE WHEN b.rost_division = 1 THEN 'RO' 
WHEN b.rost_division = 2 THEN 'ST' END) AS 'type' ,SUM(a.defect_quantity) AS 'output2'
FROM t06_product_defect_info a left join m05_product_master b on a.item_code = b.item_code
WHERE a.product_number = 'X202307171201' GROUP BY b.rost_division
และ
 SELECT (SELECT CASE WHEN b.rost_division = 1 THEN 'RO'  WHEN b.rost_division = 2 THEN 'ST' END) AS 'type'
,SUM(a.defect_quantity) AS 'output2'
 FROM t06_product_defect_info a left join m05_product_master b on a.item_code = b.item_code
 WHERE a.product_number = 'X202307171201' GROUP BY b.rost_division
ชุดแรก จะได้ output2 ของ sum defect ถูกต้อง และชุดที่สองจะได้ output1 ของ sum good ถูกต้อง แต่เมื่อผมลอง join 3 table กลับแสดง ผลรวมผิด ครับ

Re: ต้องการผล sum ที่ถูกต้องครับ

Posted: Sat Jul 22, 2023 7:05 am
by snasui
:D ลองทดสอบ Statement นี้ดูว่าได้คำตอบหรือไม่ครับ

Code: Select all

SELECT 
    COALESCE(t1.type, t2.type) AS type,
    t1.output1,
    t2.output2
FROM
(
    SELECT 
        'RO' AS type,
        SUM(a.good_quantity) AS output1,
        NULL AS output2
    FROM 
        [mcproductsystem].[dbo].[t09_product_report_press] a 
        INNER JOIN m0S_product_master b ON a.item_code = b.item_code 
    WHERE 
        a.product_number = 'X202307171201' AND b.rost_division = 1
    GROUP BY 
        b.rost_division
) t1
FULL OUTER JOIN
(
    SELECT 
        'ST' AS type,
        NULL AS output1,
        SUM(a.defect_quantity) AS output2
    FROM 
        [mcproductsystem].[dbo].t06_product_defect_info a 
        LEFT JOIN m05_product_master b ON a.item_code = b.item_code 
    WHERE 
        a.product_number = 'X202307171201' AND b.rost_division = 2
    GROUP BY 
        b.rost_division
) t2
ON t1.type = t2.type;