云星空 应收款账龄分析取数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;

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

相关推荐
困知勉行1985几秒前
Redis数据结构及其底层实现
数据库·redis·缓存
一直在追8 分钟前
告别 WHERE id=1!大数据工程师的 AI 觉醒:手把手带你拆解向量数据库 (RAG 核心)
大数据·数据库
Gofarlic_OMS12 分钟前
协同设计平台中PTC许可证的高效调度策略
网络·数据库·安全·oracle·aigc
刘一说15 分钟前
Windows 与 Linux 跨平台自动化 MySQL 8 备份:专业级脚本设计与实战指南
linux·数据库·windows·mysql·自动化
Atri厨26 分钟前
宽字节注入详解
sql·宽字节注入
耶夫斯计38 分钟前
【SQL_agent】基于LLM实现sql助理
数据库·python·sql·语言模型
徐同保1 小时前
使用node清空pinecones向量数据库
数据库
陈逸轩*^_^*1 小时前
软件工程考试速通
数据库·软件工程
Lhan.zzZ1 小时前
Qt绘制残留问题排查与修复日志
开发语言·数据库·qt
岙利岙1 小时前
MySQL使用jemalloc作为内存分配器
数据库·mysql·jemalloc