zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    在mysql中,DATE_FORMAT(date, format) 函数根据format字符串格式化date值。
    FTPClient下载文件遇到的坑
    FTP链接的主被动模式:500 Illegal PORT command的问题
    Shell脚本入门
    Ubuntu18.04出现启动紫屏卡死不弹登录框问题
    Linux如何关闭命令行正在执行的程序
    VMWare14Pro及Ubuntu18.04安装Linux
    Ubuntu虚拟机下Linux安装及安装后基本配置设置
    Ubuntu 18.04 软件源修改成国内源(文件或界面形式)
    VMware虚拟机删除已经安装的linux操作系统
  • 原文地址:https://www.cnblogs.com/hbsfgl/p/5031819.html
Copyright © 2011-2022 走看看