SELECT COUNT(*)AS AddOrder, IFNULL(SUM(m.OrderReceived), 0) AS OrderReceived, IFNULL(SUM(m.WaitingDelivery), 0)AS WaitingDelivery, IFNULL(SUM(m.PlanDelivery), 0)AS PlanDelivery, IFNULL(SUM(m.InDelivery), 0)AS InDelivery, IFNULL(SUM(m.DeliveryForTransport), 0)AS DeliveryForTransport, IFNULL(SUM(m.PlanShipment), 0)AS PlanShipment, IFNULL(SUM(m.DuringDelivery), 0)AS DuringDelivery, IFNULL(SUM(m.SentAway), 0)AS SentAway, IFNULL(SUM(m.PlanSent), 0)AS PlanSent, IFNULL(SUM(m.InSent), 0)AS InSent, IFNULL(SUM(m.BeSign), 0)AS BeSign, IFNULL(SUM(m.OutsourcingTransport), 0)AS OutsourcingTransport, IFNULL(SUM(m.OutsourcingSign), 0)AS OutsourcingSign, IFNULL(SUM(m.AbnormalOrder), 0)AS AbnormalOrder FROM (SELECT t1.`CreateDate`, t.`ExtendOrderID`AS AddOrder, tt.CompanyID, CASE WHEN t1.`OrderStatus`=20 THEN 1 ELSE NULL END AS OrderReceived, CASE WHEN t.`OrderStatus`=10 THEN 1 ELSE NULL END AS WaitingDelivery, CASE WHEN t.`OrderStatus`=20 THEN 1 ELSE NULL END AS PlanDelivery, CASE WHEN t.`OrderStatus`=30 THEN 1 ELSE NULL END AS InDelivery, CASE WHEN t.`OrderStatus`=40 THEN 1 ELSE NULL END AS DeliveryForTransport, CASE WHEN t.`OrderStatus`=50 THEN 1 ELSE NULL END AS PlanShipment, CASE WHEN t.`OrderStatus`=60 THEN 1 ELSE NULL END AS DuringDelivery, CASE WHEN t.`OrderStatus`=70 THEN 1 ELSE NULL END AS SentAway, CASE WHEN t.`OrderStatus`=80 THEN 1 ELSE NULL END AS PlanSent, CASE WHEN t.`OrderStatus`=90 THEN 1 ELSE NULL END AS InSent, CASE WHEN t.`OrderStatus`=100 THEN 1 ELSE NULL END AS BeSign, CASE WHEN t1.`OrderStatus`=45 THEN 1 ELSE NULL END AS OutsourcingTransport, CASE WHEN t1.`OrderStatus`=55 THEN 1 ELSE NULL END AS OutsourcingSign, CASE WHEN IFNULL(n.OrderID,0) THEN 1 ELSE NULL END AS AbnormalOrder FROM `tt_tms_orderextend` t1 JOIN `tt_tms_order` tt ON tt.`OrderID`=t1.`OrderID` LEFT JOIN `tt_tms_transorder` t ON t.`ExtendOrderID`=t1.`ExtendOrderID` LEFT JOIN (SELECT DISTINCT OrderID FROM tt_tms_abnormal)n ON n.OrderID=t1.`OrderID` ) m WHERE m.`CreateDate` BETWEEN @BeginDate AND @EndDate