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

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

相关推荐
小徐不徐说11 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场12 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__13 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁14 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk15 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW15 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB16 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_16 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室17 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
龙腾AI白云17 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱