sum cse 语句
SELECT C.ProtocolCustomerSN AS CompanySN , C.CompanyName AS CompanyName , ISNULL(CheckingAccount, 0) + ISNULL(CAB.FreeCharge, 0) AS TotalAccount , -- ISNULL(V4.CheckingAccount, 0) AS CheckingAccount , -- CAB.MarginCharge AS MarginCharge , -- ISNULL(CAB.FreeCharge, 0) AS FreezeAccount , -- 0 AS ETicketAccount , 0 AS CouponAccount , --ISNULL(V1.ETicketAccount, 0) AS ETicketAccount, -- --ISNULL(V2.CouponAccount, 0) AS CouponAccount, --, ISNULL(CPB.Point, 0) AS PointAccount , -- 0 AS PreAuthAccount , -- ISNULL(-V3.RentConsumeReceivable, 0) AS RentConsumeReceivable , -- ISNULL(-V3.PeccancyReceivable, 0) AS PeccancyReceivable , -- ISNULL(-V3.AccidentReceivable, 0) AS AccidentReceivable , -- ISNULL(-V3.LiquidatedDamagesReceivable, 0) AS LiquidatedDamagesReceivable , -- ISNULL(-V3.ValueAddedServiceReceivable, 0) AS ValueAddedServiceReceivable , -- ( ISNULL(-V3.RentConsumeReceivable, 0) + ISNULL(-V3.PeccancyReceivable, 0) + ISNULL(-V3.AccidentReceivable, 0) + ISNULL(-V3.LiquidatedDamagesReceivable, 0) + ISNULL(-V3.ValueAddedServiceReceivable, 0) ) AS TotalReceivable , CAB.PCustomerID AS PCustomerID , E.EmployID AS ServiceOperatorID , E1.EmployID AS ClientManagerID , E.EmployName AS ServiceOperatorName , E1.EmployName AS ClientManagerName , ISNULL(T.RentingCharge, 0) AS RentingCharge , -- PreAuthCharge = ISNULL(PCAS.PreAuthCharge, 0) , UseCharge = ISNULL(PCAS.UseCharge, 0) FROM TB_PCustomerAccountBalance CAB LEFT OUTER JOIN dbo.TB_PCustomerPointBalance CPB ON CPB.PCustomerID = CAB.PCustomerID LEFT OUTER JOIN ( SELECT SUM(CASE WHEN V_ReceivableCharge.ItemID = 1 THEN ISNULL(ReceivableCharge, 0) ELSE 0 END) + SUM(CASE WHEN V_Adjust.ItemID = 1 THEN ISNULL(AdjustCharge, 0) ELSE 0 END) AS RentConsumeReceivable , -- SUM(CASE WHEN V_ReceivableCharge.ItemID = 2 THEN ReceivableCharge ELSE 0 END) + SUM(CASE WHEN V_Adjust.ItemID = 2 THEN ISNULL(AdjustCharge, 0) ELSE 0 END) AS PeccancyReceivable , -- SUM(CASE WHEN V_ReceivableCharge.ItemID = 3 THEN ReceivableCharge ELSE 0 END) + SUM(CASE WHEN V_Adjust.ItemID = 3 THEN ISNULL(AdjustCharge, 0) ELSE 0 END) AS AccidentReceivable , -- SUM(CASE WHEN V_ReceivableCharge.ItemID = 4 THEN ReceivableCharge ELSE 0 END) + SUM(CASE WHEN V_Adjust.ItemID = 4 THEN ISNULL(AdjustCharge, 0) ELSE 0 END) AS LiquidatedDamagesReceivable , -- SUM(CASE WHEN V_ReceivableCharge.ItemID = 6 THEN ReceivableCharge ELSE 0 END) + SUM(CASE WHEN V_Adjust.ItemID = 6 THEN ISNULL(AdjustCharge, 0) ELSE 0 END) AS ValueAddedServiceReceivable , -- V_ReceivableCharge.PCustomerID FROM ( SELECT VT.ItemID , VT.PCustomerID , SUM(VT.ReceivableCharge) AS ReceivableCharge FROM ( SELECT ( CASE BillTypeID WHEN 1 THEN 1 WHEN 27 THEN 1 WHEN 38 THEN 1 WHEN 11 THEN 1 WHEN 3 THEN 2 WHEN 5 THEN 3 WHEN 4 THEN 4 ELSE 6 END ) AS ItemID , CA.ReceivableCharge - ISNULL(woaCharge, 0) AS ReceivableCharge , PCustomerID FROM TB_PCustomerAccount CA LEFT OUTER JOIN ( SELECT SUM(woaCharge) AS woaCharge , woaBillID , woaBillType FROM TB_WriteOffPCustomerAccountsLog GROUP BY woaBillID , woaBillType HAVING SUM(woaCharge) > 0 ) V1 ON V1.woaBillID = CA.BillID AND V1.woaBillType = CA.BillTypeID WHERE TypeID = 1 AND CA.ReceivableCharge - ISNULL(woaCharge, 0) > 0 AND CA.ReceivableCharge >= 0 -- AND CA.InAccountStatusID = 1 AND CA.BillTypeID <> 45 ) VT GROUP BY VT.ItemID , VT.PCustomerID ) V_ReceivableCharge LEFT OUTER JOIN ( SELECT ( CASE AB.BillTypeID WHEN 1 THEN 1 WHEN 27 THEN 1 WHEN 38 THEN 1 WHEN 3 THEN 2 WHEN 5 THEN 3 WHEN 4 THEN 4 ELSE 6 END ) AS ItemID , CA.PCustomerID , SUM(AdjustCharge) - SUM(ISNULL(V1.woaCharge, 0)) + SUM(ISNULL(V2.woaCharge, 0)) AS AdjustCharge FROM TB_PCustomerAccount CA INNER JOIN dbo.TB_AdjustBill AB ON CA.BillID = AB.BillID AND CA.BillTypeID = 45 LEFT OUTER JOIN ( SELECT SUM(woaCharge) AS woaCharge , woaBillID , woaBillType FROM TB_WriteOffPCustomerAccountsLog GROUP BY woaBillID , woaBillType HAVING SUM(woaCharge) > 0 ) V1 ON CA.BillID = V1.woaBillID AND CA.BillTypeID = V1.woaBillType LEFT OUTER JOIN ( SELECT SUM(woaCharge) AS woaCharge , woaGatheringID , woaGatheringType FROM TB_WriteOffPCustomerAccountsLog GROUP BY woaGatheringID , woaGatheringType HAVING SUM(woaCharge) > 0 ) V2 ON CA.BillID = V2.woaGatheringID AND CA.BillTypeID = V2.woaGatheringType WHERE AdjustCharge > 0 GROUP BY CA.PCustomerID , ( CASE AB.BillTypeID WHEN 1 THEN 1 WHEN 27 THEN 1 WHEN 38 THEN 1 WHEN 3 THEN 2 WHEN 5 THEN 3 WHEN 4 THEN 4 ELSE 6 END ) ) V_Adjust ON V_ReceivableCharge.PCustomerID = V_Adjust.PCustomerID AND V_ReceivableCharge.ItemID = V_Adjust.ItemID GROUP BY V_ReceivableCharge.PCustomerID ) V3 ON V3.PCustomerID = CAB.PCustomerID LEFT OUTER JOIN ( SELECT A.PCustomerID , ( SUM(GatheringCharge - ISNULL(V2.UnWriteOffCharge, 0) + CASE WHEN ( BillTypeID = 11 OR BillTypeID = 45 ) AND ReceivableCharge < 0 THEN -ReceivableCharge ELSE 0 END) - ISNULL(CAB.FreeCharge, 0) ) AS CheckingAccount FROM TB_PCustomerAccount A LEFT OUTER JOIN ( SELECT SUM(woaCharge) AS WriteOffCharge , woaBillID , woaBillType FROM TB_WriteOffPCustomerAccountsLog GROUP BY woaBillID , woaBillType ) V1 ON A.BillID = woaBillID AND A.BillTypeID = woaBillType LEFT OUTER JOIN ( SELECT SUM(woaCharge) AS UnWriteOffCharge , woaGatheringID , woaGatheringType FROM TB_WriteOffPCustomerAccountsLog GROUP BY woaGatheringID , woaGatheringType ) V2 ON A.BillID = woaGatheringID AND A.BillTypeID = woaGatheringType LEFT OUTER JOIN TB_PCustomerAccountBalance CAB ON CAB.PCustomerID = A.PCustomerID WHERE A.InAccountStatusID = 1 GROUP BY A.PCustomerID , CAB.FreeCharge HAVING ( SUM(GatheringCharge - ISNULL(V2.UnWriteOffCharge, 0) + CASE WHEN ( BillTypeID = 11 OR BillTypeID = 45 ) AND ReceivableCharge < 0 THEN -ReceivableCharge ELSE 0 END) - ISNULL(CAB.FreeCharge, 0) ) > 0 ) V4 ON V4.PCustomerID = CAB.PCustomerID LEFT OUTER JOIN TB_ProtocolCustomer C ON C.ProtocolCustomerID = CAB.PCustomerID LEFT OUTER JOIN TB_EmployeeInfo E ON E.EmployID = C.ServiceOperatorID LEFT OUTER JOIN TB_EmployeeInfo E1 ON E1.EmployID = C.OperatorID LEFT OUTER JOIN ( SELECT ProtocolCustomerID , ISNULL(SUM(ISNULL(ConsumeCharge, 0)), 0) AS RentingCharge FROM ( -- SELECT ARF.ProtocolCustomerID , ConsumeCharge = ISNULL(SUM(P.RealCharge), 0) FROM dbo.TB_AutoRentFlow ARF INNER JOIN dbo.TB_Precontract P ON ARF.FlowID = P.RentID WHERE ARF.RentChargePayTypeID = 2 AND ARF.RentStatus IN ( 1, 2, 3 ) AND ARF.FlowID NOT IN ( SELECT BillID FROM TB_PCustomerAccount WHERE BillTypeID = 1 AND InAccountStatusID = 1 ) GROUP BY ARF.ProtocolCustomerID UNION ALL -- SELECT CRB.crbPCustomerID AS ProtocolCustomerID , ConsumeCharge = ISNULL(SUM(CRB.crbReceivableAmount), 0) FROM dbo.TB_ChauffeurRentBill CRB WHERE CRB.crbPCustomerPayWayID = 2 AND CRB.crbRentStatusID IN ( 1, 2, 3 ) AND CRB.crbBillID NOT IN ( SELECT BillID FROM TB_PCustomerAccount WHERE BillTypeID = 27 AND InAccountStatusID = 1 ) GROUP BY CRB.crbPCustomerID UNION ALL -- SELECT LRB.lrbProtocolCustomerID AS ProtocolCustomerID , ConsumeCharge = ISNULL(SUM(LRUCP.lrpcMonthTotalCharge), 0) FROM dbo.TB_LongRentBill LRB LEFT OUTER JOIN dbo.TB_LongRentUseCarProcess LRUCP ON LRUCP.lrpcLongRentBillID = LRB.lrbLongRentBillID WHERE lrpcBalanceStatus = 0 AND lrbProtocolCustomerID > 0 GROUP BY LRB.lrbProtocolCustomerID ) T1 GROUP BY ProtocolCustomerID ) T ON T.ProtocolCustomerID = CAB.PCustomerID LEFT OUTER JOIN ( SELECT PCustomerID , UseCharge = SUM(ISNULL(BC.BalanceGetCharge, 0) - ISNULL(FC.FreezeCharge, 0)) , PreAuthCharge = SUM(ISNULL(SC.Amount, 0)) FROM dbo.TB_PCustomerAssigner PCA LEFT OUTER JOIN ( SELECT CustomerID , BalanceGetCharge = ISNULL(SUM(ISNULL(GatheringCharge, 0)) - SUM(ISNULL(ReceivableCharge, 0)), 0) FROM [dbo].[TB_CustomerAccount] WHERE InAccountStatusID = 1 GROUP BY CustomerID ) BC ON PCA.CustomerID = BC.CustomerID LEFT OUTER JOIN ( SELECT CustomerID , FreezeCharge = ISNULL(SUM(ISNULL(FreezeCharge, 0)), 0) FROM [dbo].[TB_CustomerAccountFreeze] WHERE StatusID = 1 GROUP BY CustomerID ) FC ON PCA.CustomerID = FC.CustomerID LEFT OUTER JOIN ( SELECT CustomerID , Amount = SUM(ISNULL(B.Amount, 0)) FROM dbo.TB_SCardTradeBill A LEFT OUTER JOIN dbo.TB_SCardTradeBillItem B ON A.BillID = B.BillID AND CurrentTradeTypeID = B.TradeTypeID WHERE CurrentTradeTypeID = 3 AND B.AuditTag = 1 AND DATEDIFF(dd, B.TradeTime, GETDATE()) <= 28 GROUP BY CustomerID ) SC ON PCA.CustomerID = SC.CustomerID WHERE ISNULL(BC.BalanceGetCharge, 0) - ISNULL(FC.FreezeCharge, 0) < 0 GROUP BY PCustomerID ) PCAS ON PCAS.PCustomerID = CAB.PCustomerID