云星空 应收款账龄分析取数SQL

云星空 应收款账龄分析取数SQL,应收款账龄来源于 业务应收单、应收收款核销金额、应付付款核销单 应收单单据ID=核销单源单ID与应收单行ID=核销单源行ID 业务应收单应收款金额-应收收款核销金额-应付付款核销金额<>0的数据。AR_RECEIVABLE

收款单未完成核销的收款明细,金额取负数 AR_RECEIVEBILL

收款退款单未完成核销的退款明细 AR_REFUNDBILL

其他应收单未完成收款核销的明细 AR_OtherRecAble

sql 复制代码
SELECT 'AR_RECEIVABLE' FFORMID,t1.FBILLNO,
       t1.FSALEORGID,
       t1.FCUSTOMERID,
       CONVERT(NUMERIC(18, 2)
	           ,SUM(ISNULL(t3.FPAYAMOUNTFOR, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamountfor, 0) - ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNTFOR, 0)) 
			   ) FPAYAMOUNTFOR,
       CONVERT(NUMERIC(18, 2)
	           ,SUM(ISNULL(t3.FPAYAMOUNT, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamount, 0)- ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNT, 0))
			   ) FPAYAMOUNT,
       t1.FCURRENCYID,
       t1.F_BHR_NDQ_DATE
FROM T_AR_RECEIVABLE t1
    LEFT JOIN T_AR_RECEIVABLEFIN t2
        ON t1.FID = t2.FID
    LEFT JOIN T_AR_RECEIVABLEPLAN t3
        ON t1.FID = t3.FID
    LEFT JOIN T_BD_CUSTOMER CUST
        ON t1.FCUSTOMERID = CUST.FCUSTID
    LEFT JOIN
    (
        SELECT AR_Datas.FSOURCEFROMID,
               AR_Datas.FSRCBILLID,
               AR_Datas.FSRCROWID,
               ISNULL(SUM(AR_Datas.FCURWRITTENOFFAMOUNTFOR), 0) FCURWRITTENOFFAMOUNTFOR,
               ISNULL(SUM(AR_Datas.FCURWRITTENOFFAMOUNT), 0) FCURWRITTENOFFAMOUNT
        FROM
        (
            SELECT PayLogEntry.FSOURCEFROMID,
                   FSRCBILLID,
                   FSRCROWID,
                   PayLogEntry.FCURWRITTENOFFAMOUNTFOR,
                   PayLogEntry.FCURWRITTENOFFAMOUNT
            FROM T_AR_RECMACTHLOG PayLog
                INNER JOIN T_AR_RECMACTHLOGENTRY PayLogEntry
                    ON PayLog.FID = PayLogEntry.FID
            WHERE PayLogEntry.FSOURCEFROMID = 'AR_receivable'
        ) AR_Datas
        GROUP BY AR_Datas.FSOURCEFROMID,
                 AR_Datas.FSRCBILLID,
                 AR_Datas.FSRCROWID
    ) AR_MatchLog
        ON t1.FID = AR_MatchLog.FSRCBILLID
           AND t3.FENTRYID = AR_MatchLog.FSRCROWID
    LEFT JOIN
    (
        SELECT AP_Datas.FSOURCEFROMID,
               AP_Datas.FSRCBILLID,
               AP_Datas.FSRCROWID,
               ISNULL(SUM(AP_Datas.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
               ISNULL(SUM(AP_Datas.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
        FROM
        (
            SELECT PayLogEntry.FSOURCEFROMID,
                   FSRCBILLID,
                   FSRCROWID,
                   PayLogEntry.FCURWRITTENOFFAMOUNTFOR,
                   PayLogEntry.FCURWRITTENOFFAMOUNT
            FROM T_AP_PAYMATCHLOG PayLog
                INNER JOIN T_AP_PAYMATCHLOGENTRY PayLogEntry
                    ON PayLog.FID = PayLogEntry.FID
            WHERE PayLogEntry.FSOURCEFROMID = 'AR_receivable'
        ) AP_Datas
        GROUP BY AP_Datas.FSOURCEFROMID,
                 AP_Datas.FSRCBILLID,
                 AP_Datas.FSRCROWID
    ) AP_MatchLog
        ON t1.FID = AP_MatchLog.FSRCBILLID
           AND t3.FENTRYID = AP_MatchLog.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
      AND CUST.FCORRESPONDORGID = 0
GROUP BY t1.FSALEORGID,
         t1.FCUSTOMERID,
         t1.FCURRENCYID,
         t1.F_BHR_NDQ_DATE
		 ,t1.FBILLNO
HAVING SUM(ISNULL(t3.FPAYAMOUNTFOR, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamountfor, 0)
           - ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNTFOR, 0)
          ) <> 0
UNION ALL
SELECT 'AR_RECEIVEBILL' FFORMID,t1.FBILLNO,
       t1.FSETTLEORGID FSALEORGID,
       t1.FCONTACTUNIT,
       /*收款单.表体.应收款金额-应收收款核销记录.本次核销金额*/
       -1 * SUM(ISNULL(t2.FRECTOTALAMOUNTFOR, 0) - ISNULL(t17.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
       -1 * SUM(ISNULL(t2.FRECTOTALAMOUNT, 0) - ISNULL(t17.fcurwrittenoffamount, 0)) FPAYAMOUNT,
       t1.FCURRENCYID,
       t1.FDATE
FROM T_AR_RECEIVEBILL t1 /*收款单*/
    LEFT JOIN T_AR_RECEIVEBILLENTRY t2
        ON t1.FID = t2.FID /*收款单明细*/
    LEFT JOIN T_BD_CUSTOMER_L t4
        ON t4.FCUSTID = t1.FCONTACTUNIT
           AND t4.FLOCALEID = 2052
    LEFT JOIN T_ORG_ORGANIZATIONS_L t5
        ON t1.FSETTLEORGID = t5.FORGID
           AND t5.FLOCALEID = 2052
    LEFT JOIN T_BD_CUSTOMER t10
        ON t4.FCUSTID = t10.FCUSTID
    LEFT JOIN T_BD_CUSTOMERGROUP_L t11
        ON t10.FPRIMARYGROUP = t11.FID
           AND t11.FLOCALEID = 2052
    LEFT JOIN
    (
        SELECT AR_data.FSOURCEFROMID,
               AR_data.FSRCBILLID,
               AR_data.FSRCROWID,
               ISNULL(SUM(AR_data.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
               ISNULL(SUM(AR_data.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
        FROM
        (
            SELECT LogEntry.FSOURCEFROMID,
                   FSRCBILLID,
                   LogEntry.FSRCROWID,
                   LogEntry.FCURWRITTENOFFAMOUNTFOR,
                   LogEntry.FCURWRITTENOFFAMOUNT
            FROM T_AR_RECMACTHLOG PayLog
                INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
                    ON PayLog.FID = LogEntry.FID
            WHERE LogEntry.FSOURCEFROMID = 'AR_RECEIVEBILL'
        ) AR_data /*应收收款核销 收款单*/
        GROUP BY AR_data.FSOURCEFROMID,
                 AR_data.FSRCBILLID,
                 AR_data.FSRCROWID
    ) t17
        ON t1.FID = t17.FSRCBILLID
           AND t2.FENTRYID = t17.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
      AND t10.FCORRESPONDORGID = 0
-- AND t1.FCONTACTUNIT=106473
GROUP BY t1.FSETTLEORGID,
         t1.FCONTACTUNIT,
         t1.FCURRENCYID,
         t1.FDATE
		 ,t1.FBILLNO
HAVING SUM(ISNULL(t2.FRECTOTALAMOUNTFOR, 0) - ISNULL(t17.fcurwrittenoffamountfor, 0)) <> 0
UNION ALL
SELECT 'AR_REFUNDBILL' FFORMID,t1.FBILLNO,
       FSETTLEORGID,
       FCONTACTUNIT,
       SUM(ISNULL(t2.FREFUNDAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
       SUM(ISNULL(t2.FREFUNDAMOUNT, 0) - ISNULL(t3.fcurwrittenoffamount, 0)) FPAYAMOUNT,
       t1.FCURRENCYID,
       t1.FDATE
FROM T_AR_REFUNDBILL t1
    INNER JOIN T_AR_REFUNDBILLENTRY t2
        ON t1.FID = t2.FID
    INNER JOIN T_AR_REFUNDBILL_O t1_O
        ON t1.FID = t1_O.FID
    INNER JOIN T_CN_RECPAYPURPOSE purpose
        ON (
               t2.FPURPOSEID = purpose.FID
               AND purpose.FFINMANEGEMENT = '1' /*计入往来*/
           )
    LEFT JOIN T_BD_CUSTOMER t10
        ON t1.FCONTACTUNIT = t10.FCUSTID
    LEFT OUTER JOIN
    (
        SELECT data.FSOURCEFROMID,
               data.FSRCBILLID,
               data.FSRCROWID,
               ISNULL(SUM(data.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
               ISNULL(SUM(data.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
        FROM
        (
            SELECT LogEntry.FSOURCEFROMID,
                   FSRCBILLID,
                   LogEntry.FSRCROWID,
                   LogEntry.FCURWRITTENOFFAMOUNTFOR,
                   LogEntry.FCURWRITTENOFFAMOUNT
            FROM T_AR_RECMACTHLOG PayLog
                INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
                    ON PayLog.FID = LogEntry.FID
            WHERE (LogEntry.FSOURCEFROMID = 'AR_REFUNDBILL')
        ) data
        GROUP BY data.FSOURCEFROMID,
                 data.FSRCBILLID,
                 data.FSRCROWID
    ) t3
        ON t1.FID = t3.FSRCBILLID
           AND t2.FENTRYID = t3.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
      AND t10.FCORRESPONDORGID = 0
GROUP BY t1.FSETTLEORGID,
         t1.FCONTACTUNIT,
         t1.FCURRENCYID,
         t1.FDATE
		 ,t1.FBILLNO
HAVING SUM(ISNULL(t2.FREFUNDAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) <> 0
UNION ALL
SELECT 'AR_OtherRecAble' FFORMID,t1.FBILLNO,
       t1.FSETTLEORGID,
       t1.FCONTACTUNIT,
       SUM(ISNULL(t1.FAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
       SUM(ISNULL(t1.FAMOUNT, 0) - ISNULL(t3.fcurwrittenoffamount, 0)) FPAYAMOUNT,
       t1.FCURRENCYID,
       t1.FENDDATE
FROM T_AR_OTHERRECABLE t1
    INNER JOIN T_AR_OTHERRECABLE_O t2
        ON t1.FID = t2.FID
    LEFT OUTER JOIN V_FIN_CONTACTTYPE contacttype
        ON (
               t1.FCONTACTUNIT = contacttype.FITEMID
               AND contacttype.FFORMID = t1.FCONTACTUNITTYPE
           )
    LEFT OUTER JOIN
    (
        SELECT data1.FSOURCEFROMID,
               data1.FSRCBILLID,
               ISNULL(SUM(data1.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
               ISNULL(SUM(data1.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
        FROM
        (
            SELECT LogEntry.FSOURCEFROMID,
                   FSRCBILLID,
                   LogEntry.FCURWRITTENOFFAMOUNTFOR,
                   LogEntry.FCURWRITTENOFFAMOUNT
            FROM T_AR_RECMACTHLOG PayLog
                INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
                    ON PayLog.FID = LogEntry.FID
            WHERE (LogEntry.FSOURCEFROMID = 'AR_OtherRecAble')
        ) data1
        GROUP BY data1.FSOURCEFROMID,
                 data1.FSRCBILLID
    ) t3
        ON t1.FID = t3.FSRCBILLID
WHERE t1.FDOCUMENTSTATUS = 'C'
      AND contacttype.FCORRESPONDORGID = 0
      AND t1.FCONTACTUNITTYPE = 'BD_Customer'
GROUP BY t1.FSETTLEORGID,
         t1.FCONTACTUNIT,
         t1.FCURRENCYID,
         t1.FENDDATE
		 ,t1.FBILLNO
HAVING SUM(ISNULL(t1.FAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) <> 0;

以上只记录取数,不包括分析计算。

相关推荐
暴躁小师兄数据学院2 分钟前
【AI大数据工程师特训笔记】第08讲:集合运算与超级函数
大数据·笔记·sql·ai·postgresql
曹牧26 分钟前
Oracle:UNIX时间戳
数据库·oracle·unix
XiaoLin laile31 分钟前
【无标题】
网络·数据库·人工智能
朝阳5811 小时前
MySQL 主从复制 — Docker 双机灾备方案
数据库·mysql·docker
染翰1 小时前
生产级 MySQL 内存占用过高排查指南
数据库·mysql
一 乐1 小时前
网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·网上订餐系统
guslegend1 小时前
第3节:智能体配置表设计
数据库·人工智能
雷工笔记1 小时前
SQL系列2:PostgreSQL 日期时间字段类型选择指南
数据库·sql·postgresql
SAP上海工博云署1 小时前
2026年中小企业SAP服务商选型技术解析
大数据·运维·数据库·人工智能·信息可视化·运维开发·信息与通信
RestCloud1 小时前
版本迭代丨谷云科技ETLCloud V4.2版本更新速览
数据库·doris·etl·etlcloud·数据集成平台·datahub·ftp处理